diff --git a/ansible/playbooks/nanna-docker.yaml b/ansible/playbooks/nanna-docker.yaml index b6df139..a08150a 100644 --- a/ansible/playbooks/nanna-docker.yaml +++ b/ansible/playbooks/nanna-docker.yaml @@ -64,8 +64,12 @@ state: present - path: factorio/.env state: present + - path: hitparade/.env + state: present - path: hitparade/mopidy.conf state: present + - path: hitparade/pollmaster-config.yml + state: present # This needs to be done for any services where user: # is set in docker-compose.yaml. - name: Create volume directories with correct permissions diff --git a/docker/docker/hitparade/Dockerfile b/docker/docker/hitparade/Dockerfile new file mode 100644 index 0000000..85e9c04 --- /dev/null +++ b/docker/docker/hitparade/Dockerfile @@ -0,0 +1,3 @@ +FROM mariadb:10.6 + +COPY pollmaster_scheme.sql /docker-entrypoint-initdb.d/init.sql diff --git a/docker/docker/hitparade/docker-compose.yaml b/docker/docker/hitparade/docker-compose.yaml index 2ac4847..9ed1f18 100644 --- a/docker/docker/hitparade/docker-compose.yaml +++ b/docker/docker/hitparade/docker-compose.yaml @@ -1,11 +1,31 @@ services: - mopidy: + pollmaster_mopidy: image: git.pbrinkmeier.de/paul/mopidy4hitparade:1 volumes: - /etc/pbri/docker/hitparade/mopidy.conf:/etc/mopidy4hitparade.conf:ro - /var/lib/pbri/docker/hitparade_mopidy_cache:/var/cache/mopidy - /var/lib/pbri/docker/hitparade_mopidy_lib:/var/lib/mopidy + pollmaster_db: + image: pbrinkmeier/pollmaster_db + build: . + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" + MYSQL_DATABASE: 'pollmaster' + MYSQL_USER: 'pollmaster' + MYSQL_PASSWORD: "${MYSQL_PASSWORD}" + volumes: + - /etc/pbri/docker/hitparade/pollmaster_scheme.sql:/docker-entrypoint-initdb.d/init.sql + - /var/lib/pbri/docker/hitparade_pollmaster_db_data:/var/lib/mysql + + # Caddy terminates https for :12080 and :12081 + pollmaster: + image: git.pbrinkmeier.de/paul/pollmaster:1 + volumes: + - /etc/pbri/docker/hitparade/pollmaster-config.yml:/config.yml:ro + - /var/lib/pbri/docker/pollmaster_sessions:/app/pollmaster/sessions + networks: default: name: caddy-network diff --git a/docker/docker/hitparade/pollmaster_scheme.sql b/docker/docker/hitparade/pollmaster_scheme.sql new file mode 100644 index 0000000..79d824d --- /dev/null +++ b/docker/docker/hitparade/pollmaster_scheme.sql @@ -0,0 +1,114 @@ +CREATE TABLE IF NOT EXISTS `admin` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `image` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Schlüssel 2` (`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `artist` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `locked` tinyint(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `Name` (`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2285 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `track` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `uri` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `album` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `year` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `length` mediumint(8) unsigned NOT NULL, + `image` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `locked` tinyint(1) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `URI` (`uri`) USING BTREE, + KEY `Name` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=3570 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `playback` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `track_id` int(10) unsigned NOT NULL, + `timestamp` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_playback_track` (`track_id`), + KEY `Time` (`timestamp`), + CONSTRAINT `FK_playback_track` FOREIGN KEY (`track_id`) REFERENCES `track` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=227 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `playlist` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `uri` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Schlüssel 2` (`name`), + KEY `Schlüssel 3` (`uri`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `playlist_track` ( + `playlist_id` int(10) unsigned NOT NULL, + `track_id` int(10) unsigned NOT NULL, + `position` int(10) unsigned NOT NULL, + PRIMARY KEY (`playlist_id`,`track_id`), + KEY `FK_playlist_track_track` (`track_id`), + KEY `FK_playlist_track_playlist` (`playlist_id`), + CONSTRAINT `FK_playlist_track_playlist` FOREIGN KEY (`playlist_id`) REFERENCES `playlist` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `FK_playlist_track_track` FOREIGN KEY (`track_id`) REFERENCES `track` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `search_term` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `term` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `first_search` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Schlüssel 2` (`term`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `search_term_track` ( + `search_term_id` int(10) unsigned NOT NULL, + `track_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`search_term_id`,`track_id`), + KEY `FK_search_term_tracks_track` (`track_id`), + CONSTRAINT `FK_search_term_tracks_search_term` FOREIGN KEY (`search_term_id`) REFERENCES `search_term` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `FK_search_term_tracks_track` FOREIGN KEY (`track_id`) REFERENCES `track` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `session` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `image` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `last_seen` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Schlüssel 2` (`name`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `setting` ( + `key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `track_artist` ( + `track_id` int(10) unsigned NOT NULL, + `artist_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`artist_id`,`track_id`), + KEY `FK__track` (`track_id`), + KEY `FK__artist` (`artist_id`), + CONSTRAINT `FK__artist` FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `FK__track` FOREIGN KEY (`track_id`) REFERENCES `track` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `vote` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `track_id` int(10) unsigned NOT NULL, + `session_id` int(10) unsigned DEFAULT NULL, + `timestamp` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `FK_vote_track` (`track_id`), + KEY `FK_vote_session` (`session_id`), + CONSTRAINT `FK_vote_track` FOREIGN KEY (`track_id`) REFERENCES `track` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=319 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + diff --git a/docker/envs/hitparade/.env b/docker/envs/hitparade/.env new file mode 100644 index 0000000..5adf14e --- /dev/null +++ b/docker/envs/hitparade/.env @@ -0,0 +1,11 @@ +$ANSIBLE_VAULT;1.1;AES256 +39313233623136333531343838643537373064363466356664326339323237623032303436613735 +6233383831383339366365663931333837313161646263390a646237306331386263323031373164 +33383365643735343834643839356238646161613330353938643738636135653562646430303330 +3332306436613537370a653234353464646639366236623665623162643363353230643963636361 +65386363623336396664333237313066383764656438363233653831623238623062333064343263 +36336132393563333031656366313066383132663732313964376261656331613863393965393232 +66383031366564313636643363653239663537616537623263383135326464376330636333303736 +32316530316139323264353136633865373634323761653763326262383238396639646664653039 +31376639346138343635343937613061623261666465323332313361363064393035663038346231 +3734333734656334626265643030303634383864613536373934 diff --git a/docker/envs/hitparade/mopidy.conf b/docker/envs/hitparade/mopidy.conf index d90cb37..6a6addc 100644 --- a/docker/envs/hitparade/mopidy.conf +++ b/docker/envs/hitparade/mopidy.conf @@ -1,29 +1,26 @@ $ANSIBLE_VAULT;1.1;AES256 -30376238333130343636356165626230306663333433303031333364623636323638623335383633 -3530636161643935356530383934306230303434333232630a633435623533393632393938386638 -66666335343933363831656431333337636138326638333962376262626134353364626633363135 -3830353238396238340a366635633532656131663363646336326364653332616639653437353935 -39383934613863633933656135656566666339653462363233663136613437623266326537303661 -32613061373537636666386561333238613831343462353265616235303830613038623664663335 -32393763326331323532653062303731663033316134623762386231343563643733356166326663 -66663532376466313066636262333632393932383239303565383439346634306631343939313965 -34336234306665313362376161393861623735383935636364336539386334636238316135373639 -63666265653961383634646432376238356331633130626133316133373662386439376534656461 -61333937366433636136326531326365353431656366313563393630613836646538666562313135 -31633735663563393662353830336330366236626630613637373165313937366465396363623963 -32653162393432306161646437643965376231643433616638636636626135353665303233643366 -64636332373332383839353335653762393964623633353361363539323932376666353636323563 -62633133613538306234613137643163346338616461346265383633663161396633303562336637 -38616136626239646664366237323561373939393065313435316137373564643566383335313739 -63616664653835636566616564376131383763373031363538333637396637363437633762363963 -34313835663064666537303764343631626633346130386236303962643738383232363935646563 -64326564383132323563343566663865656235643264303634616561616365323630376131646432 -64393861376639323864366130353435336631636430326634386262376564653936383233616433 -62656166376430373065616330356262376661306236396363646539633863326161313964613666 -31353131306535653766323432373130353530376331326233613064363336373961356336333339 -39383634653531623739316639623561303065396334393061636635613532383764343761633930 -64373635366634376330383234633333363136326337373835323736656439306164346135643163 -34626665303163323139363631363536326639313635646336323264326638383062333265653033 -63633034306266383264363666383231333965306636323761306136633433663139653430633235 -61623334373466383761386365303737343839396631343733323362363736666535613230316235 -65333161633766636635 +39633434323966613834613063353666396663653732313765366566376136633039623537623937 +3763336362643734323366363265666332633465386137630a306231646266323565313463353837 +66623239373436333639646535323835626436346462633034663638346666386264353134643762 +3231383033656136650a663933343533616461656431633139313238353561643764343134333864 +32343963363233386161366461656330376136313562303736336336613534303233366538333933 +35613231646432343363396261383566383138623666393034626365663263633639366162343133 +36653131393166333431613436353435353035393231303630343439643632643438353839393062 +65313466613133353836636463306231356664666663366635643738303362643636623061386632 +62363861663534393931653634633761323430613961653264616338373566393634613732613733 +66343232623064656439326433616435333464383138383235306434393137666364316566373033 +31373061653739363064613863633335343561316137633935303466623833393938646630326139 +39353133623530656331323932643164363736386330303162393734313765643833383534363737 +38623632366238623731646462363737333135336335323831653962633936336532343762303661 +65303537366264303535326632306463383735346437313163346530663435383361633463666462 +31306264326565393337333938373430306635303636653138653133616338326631616430343364 +61373064626230383938643233373637346234386133393361393735353330373162323038653262 +61383465313231646635366434373666653634343234343266363437663763633737323738383939 +64396534343231643066336432653430333131333731643930343362303631356335363131356165 +37653464386238303565623935346666333165363264646165613431343966643263663630663332 +65653536613932366266633635663532313933623065336332666331636233343563363461613964 +62343464393164613935353938323661386665613730353030363966313735363133336530363232 +64356339613963646263613364366362643838316234666465303831376262623937366438636166 +36333737646265336131643264333631383838643366343262653663316431636635363530303962 +35323962663035396666633735623563653364666436336137656535303531353366653733343761 +63623165306133356261363033636263376565643962616635383833356236396136 diff --git a/docker/envs/hitparade/pollmaster-config.yml b/docker/envs/hitparade/pollmaster-config.yml new file mode 100644 index 0000000..113b2c1 --- /dev/null +++ b/docker/envs/hitparade/pollmaster-config.yml @@ -0,0 +1,27 @@ +$ANSIBLE_VAULT;1.1;AES256 +39633232643739366565366135306531653235356639316431343864626263366634316638313636 +6239366463313463663764373835326635653537626634630a343963616163326534326565663936 +65336166626164303033646332316534326431323631646137333637623863613331643732333932 +6235613066363363350a613166373864303566616430303463656333336133643233343166363361 +61626336623832363339663766303635303166663538666662363137613561396130643865633665 +34613166333265643436303564306137373339316464613366353361666633646237393439383139 +39366136333664356365303234343336396661613832643762663536633432303665653432636336 +30343536363862393365386561663162363632303734396431303439323531386134356265663062 +61653838366338653435333534326630613733396533393938316338383136373739376461323964 +66663930653834383762363265646634396335323737356436333964353761333630373435663263 +33356430663133313863343130636666613663633337396561633164393331343836393133303437 +63333964356534666266656139663333313264636265636137636132346163353664633130306665 +30343238333031346439363531663661656436636535386361646137633937616136623032653263 +64353338323063393630303763363434636362393365306364346435653962333166313131386432 +63613538653634653334646138633336303063643562653366343830343666353035356534663262 +32363363363633346332323537343565633637626666383164666131633363363033373064353566 +32633439653830633234643664333462653634626165356664616230353965396131336534346239 +63643532366135613233313439383863623839326361333630373131376361636363343363666139 +66393964663862396234303639613834316364613237373565373463363761313233376430396130 +39663333346665373862383333633932646531323466623662663630333136393539343061323636 +63393861643034303839366465383564646463623633323732313662613235383965666633623665 +32333365383734313033313139343963323034396137346232313331636139353134366162663163 +39623136393130353366623935306232303561353936326630373230633734663638386662626665 +63333139383564386263613337363632343139613935633433643532373262313832623639326537 +64343432323233616164626164313638666432633132393339663931633238343430373366373962 +3132333365636265366634636439613166626435653238336437