Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a4978133b9 |
@@ -0,0 +1,26 @@
|
||||
name: Deploy All Containers
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Prepare
|
||||
runs-on: runner
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Deploy
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
|
||||
chmod 644 ~/.ssh/known_hosts
|
||||
eval $(ssh-agent -s)
|
||||
ssh-add <(echo "${{ secrets.SSH_KEY }}")
|
||||
echo "HOST *" > ~/.ssh/config
|
||||
echo "${{ secrets.VAULT_PASS }}" > ~/.vault_pass.txt
|
||||
chmod 600 ansible.cfg
|
||||
/usr/bin/ansible-playbook main.yml --vault-password-file ~/.vault_pass.txt
|
||||
@@ -4,21 +4,11 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "tasks/**"
|
||||
- "roles/**"
|
||||
- "templates/**"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
task:
|
||||
description: Task to deploy
|
||||
required: false
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Prepare
|
||||
runs-on: ansible
|
||||
runs-on: runner
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v4
|
||||
@@ -26,9 +16,6 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Deploy
|
||||
env:
|
||||
TASK: ${{ inputs.task }}
|
||||
shell: sh
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
name: Update Images
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: 0 0 * * *
|
||||
|
||||
jobs:
|
||||
run-update:
|
||||
name: Run update script
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure credentials
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
|
||||
chmod 644 ~/.ssh/known_hosts
|
||||
eval $(ssh-agent -s)
|
||||
ssh-add <(echo "${{ secrets.SSH_KEY }}")
|
||||
echo "${{ secrets.VAULT_PASS }}" > ~/.vault_pass.txt
|
||||
|
||||
- name: Install required dependencies
|
||||
run: |
|
||||
python3 -m pip install requests pyyaml ansible-core --break-system-packages
|
||||
ansible-galaxy collection install community.docker
|
||||
|
||||
- name: Run update script
|
||||
run: python3 scripts/run_updates.py
|
||||
env:
|
||||
UPDATES_DISCORD_WEBHOOK: ${{vars.UPDATES_DISCORD_WEBHOOK}}
|
||||
@@ -1,12 +1,17 @@
|
||||
name: Create New Secrets Template
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- "host_vars/**"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
create-pr:
|
||||
name: Extract updated template
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: runner
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@@ -2,10 +2,6 @@ ansible_user:
|
||||
data_dir:
|
||||
docker_network_name:
|
||||
TZ:
|
||||
PUID:
|
||||
PGID:
|
||||
ansible_become_pass:
|
||||
media_path:
|
||||
|
||||
# api
|
||||
API_CONTACT_WEBHOOK:
|
||||
@@ -39,21 +35,16 @@ TRAEFIK_ENABLE_DASH:
|
||||
|
||||
# fivem
|
||||
FIVEM_LICENSE_KEY:
|
||||
PUID:
|
||||
PGID:
|
||||
media_path:
|
||||
|
||||
# mastodon
|
||||
MASTODON_DB_PASS:
|
||||
MASTODON_LOCAL_DOMAIN:
|
||||
MASTODON_SECRET_KEY_BASE:
|
||||
MASTODON_OTP_SECRET:
|
||||
MASTODON_VAPID_PRIVATE_KEY:
|
||||
MASTODON_VAPID_PUBLIC_KEY:
|
||||
MASTODON_ARE_DETERMINISTIC:
|
||||
MASTODON_ARE_KEY_DERIVATION:
|
||||
MASTODON_ARE_PRIMARY:
|
||||
# frigate
|
||||
FRIGATE_RECORDINGS_PATH:
|
||||
|
||||
# wings
|
||||
WINGS_URL:
|
||||
WINGS_CONTAINER_DIR:
|
||||
# plex
|
||||
PLEX_CLAIM_TOKEN:
|
||||
ansible_become_pass:
|
||||
|
||||
# glance
|
||||
GLANCE_PIHOLE_TOKEN:
|
||||
@@ -72,7 +63,6 @@ TINYAUTH_GENERIC_TOKEN_URL:
|
||||
TINYAUTH_GENERIC_USER_URL:
|
||||
TINYAUTH_GENERIC_SCOPES:
|
||||
TINYAUTH_GENERIC_NAME:
|
||||
TINYAUTH_REDIRECT_URL:
|
||||
TINYAUTH_OAUTH_WHITELIST:
|
||||
TINYAUTH_APP_TITLE:
|
||||
TINYAUTH_BACKGROUND_IMAGE:
|
||||
@@ -163,14 +153,3 @@ COUCHDB_PASSWORD:
|
||||
# helium
|
||||
HELIUM_BASE_URL:
|
||||
HELIUM_EXT_HMAC_SECRET:
|
||||
|
||||
# pterodactyl
|
||||
PTERODACTYL_APP_URL:
|
||||
PTERODACTYL_MYSQL_PASSWORD:
|
||||
PTERODACTYL_MYSQL_ROOT_PASSWORD:
|
||||
|
||||
# frigate
|
||||
FRIGATE_RECORDINGS_PATH:
|
||||
|
||||
# plex
|
||||
PLEX_CLAIM_TOKEN:
|
||||
|
||||
@@ -1,294 +0,0 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
32616130623462313238343730326564363332383032343538373363313536393737336133646234
|
||||
3834333265623937336465363462306632336239323963300a633362313135396131653664343461
|
||||
37383134306566653531646537376334326261396335316533666265343333376264313266333430
|
||||
3461626161316263300a636530353437623536613737653531393936383262636262333337326661
|
||||
35613336643031306437353531666638386563316166653437643062353038393866376337666266
|
||||
62383731663131383466313733363133373931613731373435336132666665633266396634633334
|
||||
30356633343565353265386135636166653063313730356462663762383565386630326463346632
|
||||
65633734346562396466376331636432653236333539613633616661333531363833346339373162
|
||||
30666465633638363637313862633438623264663436656236626136376436376239653165616133
|
||||
64343135613531303736646430366235666666353661643066666564316231663130343661633936
|
||||
61386631623139363764616539306265333134663761363238373632323334636336313333383536
|
||||
63336161626261376262346466396136656634663635363338633436646639373864633565326338
|
||||
30343039323865643261333735616235623361323063313035316535623534353536376164383064
|
||||
61666235393535346331306434323634386437396334336430313962623564333936306232666564
|
||||
33343831343734643038383565316638613935643065313032333336366637376165303232623533
|
||||
33626663373461343937303733363063626632656665636666393265353532333161633233376634
|
||||
63343033616563383831383730616333373264383133643036643061653436343838366534313764
|
||||
30323366306235323335306231383264613563633832643435306534343534333636363062323838
|
||||
35306365396332663165643837366133383932633534323039306363386262333564393635353030
|
||||
35376665393062333162393632633666636436316137353534373665653036646631383066363239
|
||||
65656164366661303230633463393830366265623065646335363630363537656133323231616465
|
||||
63333030613932366337316437366266616335333632656630653137643734393332316336383766
|
||||
33303932386361653334336136336264643438323962613166646431306635346261313836643437
|
||||
33396364626132373131383361633431386437366331373235343065363733626532643466343631
|
||||
66393063633136356637613930386463313130663262373031316332626465383733393234643165
|
||||
36393534316538623661313638383834633235393964313363616236373966653134346666336338
|
||||
62356436326463316263393061653863653934643831333366363936353038376632663738636333
|
||||
34336632323635636437356531333863633366313934343664336536666461333661663164343366
|
||||
64363764303731636139666633653439313933346630363731326137653431323939376236663535
|
||||
39386566633166383639303739393436373765366536373130613662643237646464393539393363
|
||||
61633031303539643465663930613965343931393462373739303334303437356662323034353061
|
||||
62373530393639366532646337633337613564633534346139643931373332316231653366396161
|
||||
65616330646334366330353862353134633933343733313263303364343131353033343038643761
|
||||
34313033393534646363376166303637613061363932346139366362623036393133623630323133
|
||||
36313334653764333661613435343838306363393830633538653936636664316238303735313637
|
||||
36336366643333366136386533343866316161303532613361643533626332326364323838333663
|
||||
36303464653330626135616634336632373230653165653530326261343937633634356435666433
|
||||
37393261373263666366333439303666613136336462333933343239356337373336666635336539
|
||||
62633566666462346663343730393464393433373466373564343132643634646637656437313263
|
||||
64346363653634343331316437383238353564306434336532663137363664313035633965636331
|
||||
66356639333330363163613937313234393965653836336130623834393831313333306465383735
|
||||
62366432636337303264383034336635373730613264393864656231633066616436636132343264
|
||||
39373666356266633765663932376262393835313365646538656462366236383930336162326434
|
||||
63336630623834343831613233613833366236373538363864383133376131643765346637333135
|
||||
33333636326332643135633832616236353339326166393462633539343936626466373137316139
|
||||
35386638653461646665373566626237363733623962336130643662396662613238353564633463
|
||||
31613764303863306666383232353932623835666465323264653135336166633239333733386531
|
||||
37633737653738386230323062613465646333323435326438616530613435653338356563303161
|
||||
66643838633163663663363232366430393466393361666363356639643463353134313236623530
|
||||
37343230653636333965353437306438386165336239663934306365333866363837373132343335
|
||||
36353631373561366136623837306336333335343262386463383434303232323162383264386433
|
||||
65396530333031333031636165313434396430636436656536383830333465383736333564343566
|
||||
61623361323961326330366437383362323663356337396439343937393631653063663232333765
|
||||
61336530333065373364373331376466356235636535316136623335383361346563333737653661
|
||||
66616563373963336632623662626230626430653865303335393565363033323533626539353536
|
||||
39383832346462366138626336396233643632633438666536323336363738373366613733373663
|
||||
35323235653363663632663266353234373139303862653032343833366265306635353335636232
|
||||
39386536353864303435386434343063646232383634333837323834346332343961663933626537
|
||||
65626261343763643564616136616263663737636334623536316430616665333361343761356534
|
||||
36633039613231353632323438323664306165646134336361383337333634636162366530363938
|
||||
65656636323337343539636365343761386535666438393864623764336634653034393466363464
|
||||
65383237326433343634663037353762636635386466336231393262303233316134633465636332
|
||||
61363630353861656631653665323735616139346333383039336466356439376330656430303665
|
||||
30336332316262616166636238316531396537383266323266303666363530373930636165653135
|
||||
35323536326434363339613837653637306637656439336230666331623338633731333063636238
|
||||
65633937636362333231626132376264663362353039616533303233363666643835376366613236
|
||||
34643332303734656664656563353035653435346535643339643264366232616665343030336462
|
||||
39386538383135326461343531646263613265626562366238613863343762376235356333326236
|
||||
65363261336436663966623462363461383937663536353233323261313961626638633332613439
|
||||
61343832663561633238633935626137393630386534613963313936626166666261646165396163
|
||||
63376634623535623061346532323536303931393131643737336239363563326433663962386639
|
||||
34363137306338313465626664653437393437316465343166376535646264663834646161346664
|
||||
31613236636330323133363834353938376335313366666431376633356338313338393665613562
|
||||
61323963643531666138656461393636626462313361343936313835363932346330393865323161
|
||||
38633266303737316362613362633433346164356165386237653430396465346232376339326637
|
||||
33323132613637313537623766383239633439613462323835353063393765333365366633656539
|
||||
32303265616361643732656463326332663239383964323166643064653564626363666637393438
|
||||
36663666386336643265633030386633633465373665366164386339346334633062306431303238
|
||||
36306637656638383361663761363138373962616363303265636535663461383338366237396637
|
||||
37303763633265386234303465303638306535653635626365376365323436396632323262336434
|
||||
33393964663931633533613538393932376231323166643437333839366234666633346238646563
|
||||
31343038666136636335613563353764383631366464363164363162666434346266353932356236
|
||||
65363131303661623537653432383563383766333934326638373433356532346265633665383534
|
||||
37656666303066306536646335373963303234393763666166663638656134363439616663323638
|
||||
33626366386630346361353533373733633435633430656130336632393534356231656366633334
|
||||
63623734653663376662646635313930323566613062353631643530323764366330343834353164
|
||||
64363661313161356138643834393064353365613766633032363337393335303066663836666136
|
||||
63376461303432336232393233643737363836613666336565636365363164653630386361616332
|
||||
64383161313865393862346332373037326662613433663661333838323434633735323235636231
|
||||
34323164383436383963313963383262356266636266653636643037326330656334623362666561
|
||||
61386535393761313666663137386464343736393439663936326335353766386335386332373066
|
||||
65353434306363303165336237303236323736626139656132623632393438313134313461353139
|
||||
35323739366463633939323335303465393032333832386439346632636663316431323833356436
|
||||
35306362623635376630313938376461373733383632333661373935373239656164396638306236
|
||||
39666435356531316664363737666639633038653235333734616366363062376131353030643335
|
||||
64303433663535643135323463626663376161656231383936653766623861613134343465616539
|
||||
31383061666665366633363661396131383433383236373439373033343338356364373662653739
|
||||
35666333653863393430626266363461383434316231663030383033333739333532303561653438
|
||||
36333630656261653535613039346538626561383961343464373764343435653662643931613864
|
||||
34666361613361353163336430373134336439313863376164366536653135333465376230656564
|
||||
36373963636162353963346263366533376266643732336365353738643139366464633561386165
|
||||
36623665353130656532656535393763666263623862343938316237316466386430623834633065
|
||||
63616637393864646162386137333664376230613030366166343462353338353934353863653262
|
||||
62653539646532623138366135653734643565313566653832393164386666353462356535336539
|
||||
66623833373666666139333934306138656466336632343432333433353266313431353766653930
|
||||
63633066376562333835646437383935616533363837383662393230363536323564383831313665
|
||||
31353536303863636236356638613934393562356461643636626563376332336461643636353235
|
||||
34316661353233323433323262343362636366313831383461353930336238356563653164336465
|
||||
33623666393738623539656430623537616336663830333838393262316339336330643265313233
|
||||
38363062306238356231643736383538333463303366343032663330373930616338636538313138
|
||||
64366164313266303131366632313538313065373834386363663136383064333662366234613835
|
||||
34363461363035633733306335376331393030366135626135616238393662353738353633393363
|
||||
32386166623534623765303137396135666466336537376134613936613166393331636532303436
|
||||
34343364383066353334643836626238613239383835396435623563643233386462333836613339
|
||||
63336562346364393264613534633135633633663666656339393034376339306337623531393463
|
||||
61383931383739613030626433373563353231313535633465653735313835373965393434636661
|
||||
32303636336364316430303633373961643163633930396332353138613936373937653239313861
|
||||
32623233313461633662303639353236623166613435356364336435383938353663363130343434
|
||||
63323464653934313866313930666462636539613937393337363038643433346330333530353837
|
||||
35643437386636613534353562666334333664303365343130653762303135303964383936643662
|
||||
62376339326335393763326463663061656165326364333536343732323366373265636563316538
|
||||
63653664366666623763343465666637633239623261663762346538313765656335643961373864
|
||||
39366233613035393563313138363539306565643831333962636434353133343366343564396235
|
||||
33663332663937383137663761643332336165333636363933616365323039633130653565373834
|
||||
64376164343738313238326565333336353161363534393463373438343837383162633138373937
|
||||
39393639343639623930346238663565396337396433626134363963383465616530366534303138
|
||||
61343163383630326133313162666430323466336565353766383361383938646561653865323831
|
||||
66613231303866306339373637613432323430663261323736386266666137373664643866303133
|
||||
33376261613438643832386262333133343239363231303866313236613737363635346439396233
|
||||
64333137303237626662343764623464366533363532303438333333363465376335336238636633
|
||||
35326263383461643031656639373262353739636163643536353736653966623765303932323334
|
||||
39386164343436633766323838383331633238343563393132313731316661663463363336363037
|
||||
38663832333064336164333632633138393762623731363364633639353337323663393930333136
|
||||
35393862613439306631303635663538613861323035663939623030303263656133613131623239
|
||||
64343733636266396136396364373835353264353932643861636264666438646562386235313964
|
||||
30613335393137323839376130373465343232363435393534333738653266306530346665613438
|
||||
35653863666437316435326530353966323237306536336534653239376137616263323564343939
|
||||
38313737376135386265323463646538343233366434306339313666666161363037383330303332
|
||||
37336233643136623861323135633031366135363232663635333337373734613536303937343562
|
||||
62326636643036636638643638643436383733613639323132353362376362333333306634333236
|
||||
38613435663666303066633061626562313136316135643265393964346665616564353832393832
|
||||
62636130396632353063303261356435376531336231353539323439653231633034663163653837
|
||||
36663862396165326165616664333333663837386639663233386262393663373266306566326531
|
||||
63666333313436316664623335363061316237626538643033353063353862373438633162383635
|
||||
38653936646233346131316430333264356331316535346437666664623937656236393233313664
|
||||
65623363663235333764303736633433343366666666336434653565373661356334666363353665
|
||||
32373633633963666236383436646165343563353930633561323238316131653034383364316432
|
||||
32333531313364666661653439373866623137626232666165613866343461353235633133376437
|
||||
37363462323230383730613832653333393833666663336430396164636430336363363264313966
|
||||
39343431316136366439363563356637396237316135623735306163393635393864613361373733
|
||||
64636237656236396134616535663064363466356461323737313535616562383962663333333035
|
||||
39316336346166343435663335643635366234373237653666333438356233626232653264346530
|
||||
30643937653861663135383866666437663134393832616635653434666636396363366238613930
|
||||
32653532346562663734383231653962643531636665623166333465633165663065316333346566
|
||||
31363137333861386134353530613034616234363634373766356361343862383630336366373339
|
||||
34343034343934353263356433613238333531373434643266306162373161316361363336366661
|
||||
32666639613962626565356333363032396162353331396530336536663134396236646331666135
|
||||
61383932363464316132393061313834376634306137303939633532366134306433363338613031
|
||||
62646462396431613438653133393866653766343034303335383033323531316261633931323632
|
||||
62356438396162616235666133646336666165343662306535653662393166376530656337386533
|
||||
30626134356164336161663261616130643865336135333439353832386133313931616666663233
|
||||
63383666366532313333356662616436333035353036386434306163343939353935306266623162
|
||||
61653935613433306362346637303036326130353765356432363835373237303239616665353438
|
||||
62313366353662373535353361343034626136383232303432316264653466336133363161353038
|
||||
65653833616236633132656231646232346130666133383130353536343132373935616539336239
|
||||
66653735333163363363646238393632343835333366643833363036373634363236326464613836
|
||||
66303964303565386235626430386131656432333464336634313337383565353830343430353136
|
||||
31623561616239333037346565376532346263623538343233383930336136613461363035663466
|
||||
65633630353566323861323763383438333465306561613530316434333732326534343539663931
|
||||
32666332393835373761303335353237613263346339386438643765316138623731626539306135
|
||||
35316663333732613730306536363562656431393564336131393862326466393230633631616334
|
||||
63636636626536366161383635313238366465363162373262633638653231646137303761356334
|
||||
30333562636336313938393737613135383531646364333662393239323733353134616366343831
|
||||
62373064666664646666396137373834323738396330303664303733343363303165363832653764
|
||||
34373733306231393331353433643733356262636565306334363737643763333732353735393939
|
||||
66346264653664326261666236626137636366336335323362633364313338303535653761643634
|
||||
35333537393637366532373838363265303136383535616636376265313131633530396335613135
|
||||
32393333303935663832396136383631373631386463356664636137383734343766376237626238
|
||||
31383164366263353832303866333765623265306437633361386537643232313064336531356563
|
||||
31663666373737623232616634343732623765646463653532383733616266323732383334303231
|
||||
38653766383739393236323734343965636163306162376336343066336436633437353530643237
|
||||
33373336356365373263616164303233363835633137613936306636643563653462313232613563
|
||||
62313232373938616665663339363330366634656366333962383130336632316434393861613734
|
||||
61333039663062656139626539336337343166373165363761616634356164333433396338666664
|
||||
39643333396165663364386535303734643336613262313031346662643735363738663633633932
|
||||
31623862366531366534666665646434623636353131643266666166666665653634326262656631
|
||||
31343662346233313532383433626335613532663032646461666364363337626566323664313233
|
||||
39623962323731656435666137653965396366323234373261376632393266323663643831353631
|
||||
31656633356565363966623863636639393939356237343835373839616239633131616534356134
|
||||
35663635626432303162353338303663316663336163323838653964316662333530346132396431
|
||||
31316336646166363430613936323964643663376661663666373435343866346165646634383462
|
||||
31323232313034353839303034333238636265333266653661326631363664643566373564363561
|
||||
63623836663737303836336237306634633032376465646666326139383764343065333130333532
|
||||
36663763626564313336353764636166646531643535303231383836633136626135303765366232
|
||||
34333132383034323366653165333738653064613433373535353136396635643564666263633230
|
||||
62613838653036393637346133333732666637393639633765396531323037666437383839323233
|
||||
61616235386232303461346330326666646166326332323162653566616238333766323562383861
|
||||
63383838353135383936366564616132636164323964623235306562353866316235646535353438
|
||||
64343838626239643431653232396566346133363633616134323433616335663063343334616435
|
||||
66623938306266643365313732303133373864633165316262313764316436346463623366643162
|
||||
35333566396539373236363934343130376561353039383436353637373837626461383964353630
|
||||
64653138316366306436323338656534646130623863646333623832646162326262386430653735
|
||||
62616438393237306634643737303262636436666532613663653735346232663137386366653464
|
||||
64633933383330623465373362356432363463656635633163313133626637666436636432633539
|
||||
31346265396236313566663463393664303730663339323835616134626363303234336561663835
|
||||
31313437313231663764653963313039626139313133303361626466623038636136393730333665
|
||||
33663231623561366665363037633331633839326139376536653861323739353230663764393333
|
||||
62353038646533366265643536376635313332303039643665396436393233336532653632303136
|
||||
35396538393337396636346134376438646461363265346430616534353936643063316136363632
|
||||
30313738396133313333623966323331316462613163616663383236626162656532333335326237
|
||||
62633165353764306330643864383061363835646630353535363137303135343135613661363363
|
||||
37383265313663663238343537623265383030346465666262653862633665633562366334623465
|
||||
36396230643339366430666536326431643161633338356332373438636531373438656234343964
|
||||
35323333383039646165616132643562663662366131303039386563663463303030376133666132
|
||||
66356264306431333733626639626634313261383465636666306431633866333761656465333137
|
||||
65623264616565323136383831366161653735323163303062363365393239623261643733376463
|
||||
61656464373962363635643839346438613331616632313036366662333135346632373061313936
|
||||
38373236623666306539666330363266356166646632633765313733613137303765666233373834
|
||||
63313135376231353134346133323238623835663263376663303235386532316437646263343235
|
||||
61383065623962366234636666623861653337306431623537356261663037326362303136343435
|
||||
64663364636463626461393566623065396462343865383634623063343833346436646537383238
|
||||
63663439323463663031366665383162313764646361343365643565643832663737613166396532
|
||||
32666462386338386434323139386239623062663335303535396166303536623466656631633261
|
||||
38666262393333646437306162396232326630636139663335363061323466356130396332303739
|
||||
32303731333466393937613639653331376164373130636239653335643365343264316664356535
|
||||
31383661316436633332666463343734653639333434653838613836656433386461633734343262
|
||||
32323633393962376561643130623161306565336235386266333434396435383264353539613331
|
||||
64316565663634623639653137373436653437346365613131623932643264666538313137386231
|
||||
37326330383033323335363764356338616139306362636432366263663434326537343032383730
|
||||
34346661333930666138626662653262363035656533396232373963333066326430643237633831
|
||||
63313634346361363137656638366537373034373362353133643761303762396563613730643531
|
||||
31306630323063323262346231303332393933623936616632376534343966346262313034303163
|
||||
37336138306433353532306365646430386633623530383932303164636163613065376131613830
|
||||
33643230626463393766636638376666323531646635386435356537636264616363363031336537
|
||||
64626266303335343763313630346166626565393737353461633061616631616537386534343663
|
||||
61646234326633633666363934356630643836323934393638653435376131353136656237633434
|
||||
66636536393230396262383764643964623633643637666666633037343437313565326136663333
|
||||
34623163326531376536626566313839643164313062653639656236656537663034643364613334
|
||||
63323132326130313963633664333631393637326265323966303137383036353931633264343862
|
||||
64326330353738353831633231366431653135313536343538326639623032366230333236393730
|
||||
36353336373063326564346331643431326264613366353532653139613466383161636232666235
|
||||
63636364366130623335303536313664366434343330393136383239393236646632393138333131
|
||||
61383463633365353362613537613565623036663431356536366538626137653961336130336334
|
||||
33363138643465346436373836383934303062613239656664373339343634363833326565643136
|
||||
38393961303131366531643430633361663061636238316633666562383338356539343335383162
|
||||
65313037636132303630393037383366326162663338383434663039653562656630356662623430
|
||||
61303965656136623038656539613063343639306339383734323862366633376532613035343132
|
||||
65616338666339653735616163613565613834336330633662313236366132366536333130343631
|
||||
65356161393334336636316439626237616230363965373331346662323661323964306334386430
|
||||
37396464306231353832353032346237333166396233303936323139326163353030386334656632
|
||||
32653035333766633864316639313135343761656232333361666331643631396564363265633931
|
||||
39643463383834643664636133666637373463326266633331303732623361623037636163626632
|
||||
39306230616439356665316534623961613338643365646564353833353339323531376234343736
|
||||
39303563333761393536626432373436633036613132373332386466623061653839353565653738
|
||||
36393063316436363963323338306239633133343035306562393066663762316233636439313966
|
||||
37363834623239393230323636343937613964613030366435363035323565366166643830313933
|
||||
39313730633836633638366265623530633131343266646232613364323637316238626366373337
|
||||
37366533353438613830336463306232383266306434663735306264393136616163393538383633
|
||||
35653730346330643366666661386364313265633030386162383033613637663663313433646365
|
||||
38303932316263346162623138323563393164653134353666626665613962303632343562633065
|
||||
61356535613264306139313831626262363238653032666139653037383565383964626133343831
|
||||
38386431643765663964643162363934343832343830666432316637366339623135343931333835
|
||||
63333430653061313031633162613935653131363965303162363834303564613736636261623034
|
||||
38366137333037333634613631663464636430396131386336303238646230346265656339653936
|
||||
62383138613532343462303431636439303431636332373831373437333565396334623264313036
|
||||
30353633373062356461393633353761376233363830366433323436386537373539623838333132
|
||||
64366163643634316366383532646432653630306535376135346534353566303734303938326331
|
||||
33663030323335376665623463616266636663343831366162633938633232326638336565613830
|
||||
66303332366233663632396439666337613438616439666532366531393934303361313863623461
|
||||
33323930353065653535386665306436366430346435653362636261666336396135363661343663
|
||||
63663535363264363932376239353166363362376663663465626132386335666631666331663464
|
||||
30326231393864353231393830366631633135336363346538306264346631323931663033323562
|
||||
65333031643835646566303836623934356235323130646130383838326537646534346537333339
|
||||
38626235383736393863643733663430366462623539353364643736383038366366366165366666
|
||||
32663838346637306161643764303336383039313933343963383533613430363831663333663034
|
||||
32306461303963666635366461313163353033383262303862616464373261663334633262633863
|
||||
32316465616535393566613035363536316462343930663462626430383564323331306431356237
|
||||
35336364633433386134643838363765363161646337656633366433623664353935666365636233
|
||||
34663165653730313331623631613665313464623433363162336433336662353063346339343839
|
||||
39343366316139616236333439383762333937326166613232306464663962613163313339373566
|
||||
34373031366530646238646565306363633830653061616134653261326237626463626337653839
|
||||
34343765326536623236336464333736646465326661373431336664373939616636653161313232
|
||||
30623537313664303633316362313765663131316237363633633065353930363065313761386339
|
||||
63653532313834323331393664643436313864326535326135336364396438613734393964363563
|
||||
64363834386563366338636634396332393438653934646338336363396434393238313031326338
|
||||
35633234663863663861336632343066663365386533613232366363623033313338373336376230
|
||||
31373937313033383363396638373130313066653437663934363166363936356432353563353930
|
||||
36366335303735376136666239393938653432363037333738303135643461313130326335666135
|
||||
37346431333235376335626662626165656666343237626333613330663737306433343565653938
|
||||
39613832626339373937326134316331633163323664343965366439396530633237336637393063
|
||||
39333664653032316134663233666634613239646137653863376133333664653133353135636339
|
||||
36616634333738333130316330313035303238356536303564393538326262646366623535376335
|
||||
37626162343433613735373832616238626533353638626562613763633739613132
|
||||
+69
-244
@@ -1,245 +1,70 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
63653031383164396161336561613865633964643635396339303334366466376535613239633066
|
||||
3036373531343234393737646532653361656462306566640a363737376661643066313761346136
|
||||
32363734663861333833306534643032613539303766613730383365386434623436623833643262
|
||||
3237386137376433610a336565323332626264663939646438376661303961323864353961666362
|
||||
62336561616537353364376431666366633533393831616135653938626232613362376261303933
|
||||
62343134616532633531656666356231386530613031306331353166616337643036383636663130
|
||||
37333564373838616238366464376661663061626137626435386630303565666334323036643361
|
||||
34623135663034383661313030626238313437633433663262383439373538386137313965363435
|
||||
38313665663838313339353362356636613464336638633232383561396136343364666333396339
|
||||
39633161653531316165653939336534333335316465653139653862313834643134653137366236
|
||||
31663264393239626532393766633635333738363531663163633935303063303464666139326332
|
||||
65623561326462613564393830303532373534653738303739353031663036356262383336623365
|
||||
35343938633964626137666235333235343635343466316333303332633235313365313232616262
|
||||
38383036366639366134303963323738643231636332326364386563303165336366636636363566
|
||||
36313462373932393833353263363939336366373238626638643033366361643335333762396338
|
||||
31316333323537666262373762336234336531613362373334636532626536383532366430363164
|
||||
33353039396338386266303032306364386165386265346662323136386330626636643330333836
|
||||
31313665343937663337326666623831363862346535623538366535306231343333303130613066
|
||||
62393962383238396363326231303662346132303866666537323739613739326463333862313731
|
||||
39313664653231626435396264636335353861346131386432613739363064613237623765626135
|
||||
61313136363831303861616636613464323530333835356638636335613039333061303532366265
|
||||
34363038383537623133666438636238353033393366656261343731396437303536653939373038
|
||||
61613766343431656164333034623865313131373563313733356335323439356135373161646465
|
||||
38633363653430376138626435393032343635666561653330376662613964623466623635656333
|
||||
63333034396333353265366365383131663362623431313639353132643030326339303563623761
|
||||
36666166316439616432383531653934616266326334666436313939353139353533633666366235
|
||||
32353835383736653063383633326132366464306164356331633066656264376463626436656339
|
||||
33313339356135336631323566636438366365336266376139383338306265323238393134393930
|
||||
37396330383662356134326166326262626533303234383331666661663133643461343864356636
|
||||
36333230653734663965373830383639616634343439313331326161616333363662383261663963
|
||||
61633163366535346437393161316638313964333362396565666539666335643663313430333265
|
||||
39663038636166363061623765623661306132333230626230356365396234633964616262363337
|
||||
65303136366261313430323436666135363937666531323563336538356666646461646634653332
|
||||
34656334373334616164633331313539646231373563383630643637386536323763393333356332
|
||||
66643238386238333032386330313064363832383631386165346362663232303462326336643732
|
||||
61336330346633313466396237376531616232613766313463363430323166663661666231353964
|
||||
64373634626337363830363861353039633061653938306136646134316336613264643565373632
|
||||
65363930633538326432386562396334366634373065353263636336383263376433306536633730
|
||||
33306665383737353531333065386338363865356164396234613935663064396439646436386534
|
||||
65376232373336353064623734366466396330316536336538373434613939633061383638653537
|
||||
66336566346230623733643539633863666564303933613130613335643438386563373234633735
|
||||
31343332343639366131326537646364636532623737653331633663396562616535303666613864
|
||||
33643063356633393931613430373534353131346562623232643962616238393763393037303635
|
||||
32623133313037616634323838643834343732343864363130356562363663343963376130663761
|
||||
32363061366236613934636139366262636331376362396636376437633464396364616433393835
|
||||
33636638663936356263383935396365333665366566666232393436633464613131366363643931
|
||||
61303562656161363631613932376366613761663963303133346261313861336461373565616166
|
||||
39623434633965386563313239316637313162366363626132366236313664393238623965323937
|
||||
66343932373936323135326232326334663630646265326663313035316462356236363565393732
|
||||
65646138663636346463366665343633653264313863373230363533343264613533636132346231
|
||||
33633466663864383362353432376266303530383030346534623561343238326165333864636362
|
||||
62663061303934636535363633653466356539616132336461653735316630306564383265316538
|
||||
32633466343533366463323264373864646436316634343966663739613563343534633134363932
|
||||
65336138323765303034656564613666333932633530326639326337376166643862353937353663
|
||||
63646562633137663432316136373738646137373461343435383932643739643662633063373466
|
||||
63336330633165356665346462393965323833616133643766356431326362613866346638633963
|
||||
30323934613565386261303239336634666633353633393263653739616539366364666533313236
|
||||
37393836663064376239326538393835336130313164303535346361343735383835666333666266
|
||||
36626535396666396634326334373634653538326436366230303363336234366461623564373363
|
||||
39303537363534663565656561633031643835613666383565366234313138643062323031326364
|
||||
33383966336364356530353437616363363463346561373536323736643561313732343634396339
|
||||
35363430303663303631383661353632333139623662356431353437643236396161613939313161
|
||||
61306237396235313539663163666163653538656638613230636431353331396639346236333731
|
||||
33663933616266386635366134643039373833653035363461373931623865643632663363316166
|
||||
31393362643465376233643166613530313532386261643866326439656537663737343331393835
|
||||
61643166613965626539353931353539386261393566383133633930613432646562666437653733
|
||||
30646132343238643739613534346131643265326138386539623662313861303963326138333531
|
||||
32303131643534326134323763653965633866613666306234396431386666626439643665396532
|
||||
31646664363033323437646332356462316261343438653337383938643764353066333265313462
|
||||
64393730353162626639323734616466343937356134303230663965393835666163316366623638
|
||||
31623533626365616338616364626466396638633166313039663633363033363536323664646137
|
||||
36393035323330376561363265316435346163323861306266343537633263333834633037623935
|
||||
64393936663534643236326265386266313232393136626163383136616136323530396163656431
|
||||
39343662356132363563623566646262363632646532366262623931396430393832353935363561
|
||||
32653839393964333566386231383832613064623332376365383037653362633865373538613666
|
||||
61356633663261653564623865303462353230383465633633383233623230323262386161636130
|
||||
33303436346161666632626364303937616432336166376262666165353663373839623332333863
|
||||
61616163643335623162353662316664626331623431356636303861333866326534626434383934
|
||||
36336632613830656431633838373263313230366465666539316263303332663666323931303261
|
||||
34363039656534633339643163626137646336656533663531666366373239623465353837303835
|
||||
32353465303033613961623630353536366634323038366239306330313736383361333639396264
|
||||
62356638343435613563343534316230326439393030373462363038373766393666383066336431
|
||||
36633663626164353764383733336161353537306266303133386139313033373065643832316437
|
||||
37356233633535393639636335616466626234363264306439376433633335653939633732393932
|
||||
36393938316332386234356638643162613966333035363436366138336433393730613730633862
|
||||
34616631316331363263303031316130333533323635386561656363653537323836396634376238
|
||||
37643434383034383535313932383464666532653234363462343937323935393737353333656337
|
||||
64656631336461633835666265353965643963633463653133303934353533663136636233353463
|
||||
38333238303332643262623130646562336464656638373761613736653430393838353064313930
|
||||
64313034313831383366663138313332303864383037636465666339336566306632643063316332
|
||||
36313362383435343665653563303664393964333533656561613733363134653734613632326166
|
||||
32643065376334636238663036353036616262333334363539346136393831643861386234303666
|
||||
39316363313238333666333230323536653664326535626363333335303336323732626332366362
|
||||
30626139343932643364323237616466326333363964313364306265333639376333363733623437
|
||||
64323635333131313636393137653033623533643931633431366633616533383531633432633230
|
||||
62616532643332666434613935656634313265393464376233616533363832393135653866306332
|
||||
32323931653831646238636138613236363461373432663537326439663365386330386662366638
|
||||
66656562613239613363653132616137313133613934646436623539323462653363383761623138
|
||||
30356364633938363535613632393464646566343933316634306338373730396136386564633963
|
||||
31636530656432643136623937353836323665396562356136643963626165376561386264393132
|
||||
32646163633965333036356430646332616637643632393938316630346661363934626233386563
|
||||
63316333316631393362373534326231613939633735306233626264643532653265313838656330
|
||||
35373738356530656436373238613831373664306234623933303764386366323563633236343138
|
||||
65663030383232373933383236316166373234366530633362636432633737373830393361376430
|
||||
35623364373063353733386163363736623735626433353535623662326566633764376233653832
|
||||
64383733343762633461333361653434373135666534383164386134626131336665353537383865
|
||||
64656132366632356330643166346264386265633531313266356263353339616466353664656464
|
||||
62376265396634316332303865616530653764306263343635363732363731613639663133663665
|
||||
61383365663139666338306365333232303762353366613338323565336634306331383564313663
|
||||
65383863326264343034386136326132666463663537656265333232643061343364326631373136
|
||||
35656237643766653731333664366135306236623730376431633830636337383835313033336430
|
||||
34646663313732646438306561376134333165376337323731303761666263626165623561326235
|
||||
65356463616262663137303465353832346335333437346462653662393166663838336137623133
|
||||
35363638613965343665336564356535333335613364376632663062313364363832303839393766
|
||||
38376563643832363565316536356236643135313565666166623832356564333839616462353331
|
||||
36656437363662323039666336383137393839383563393235363332363630396435333239306336
|
||||
61646263333066323764366531323637626533383539326332393364393430316134383737303962
|
||||
37636434366636663339303965353536643138333534326433643932306464373831653732626637
|
||||
66333232326363633065363632363461343236666637333331393237303462666532643337633436
|
||||
31373335393962306261306664353234616261666135346365356462623831613933343032656130
|
||||
62366165383661626564343932643563343638326635663062333531363035656537366263323237
|
||||
35346265393235366463303938663135646533616431366362396336666232353063356662363530
|
||||
32326134616331653930663930383331373063303537306439323838353232376536326433343338
|
||||
39316135313037333435366566303736646331306636383366363963633564356139303264333837
|
||||
33316264643730643461303866316463613038616163646562333733373130666337646364343538
|
||||
38396630346566623665326434316134333636666130336432643439666565656138386262646333
|
||||
36306636353433343636306665343939363365626239626466393365663436316334396165643562
|
||||
63663035343463653237336539646561616165323637626434613232343433353739336264613831
|
||||
65346264386532376639343239393364323833616361613661633165393238336631363533643133
|
||||
32653733613830643165346535316236363563623333653333643831616134653765383662323066
|
||||
66393565633630613061353339356436663534386464623735363138363263376261363537303439
|
||||
35386634323463636630326334653631643433356334363530666631656434346366666435633063
|
||||
38333937666363663364356135313664363630666534313364373061343666383732366132653837
|
||||
30303661666630626439353934306136613537343733336562653338663337613536353639646161
|
||||
62653030346536663038363436323134653232356565356134393465323839623032313139336330
|
||||
33363138383130343335313763663763373333666565313839613765303034336437333431633239
|
||||
36623662383862303363333563396665636261653230623033666162326438396363363537626463
|
||||
37383032383138303531353665626666383030323437663436666136313034363231666134363436
|
||||
35663938306262353566656562396333363339353030656135353365326563393933626332386339
|
||||
31303330323836616633323766326662643366333661363066616333363230356635646365333332
|
||||
63396433316364633163383237393135303937313366633635653666343462643836356535643065
|
||||
39306138663535663866643138623235633461633233396335623634343461306231356231623038
|
||||
39636235343166313435326632373130316563646336336632393434313737653237356136383663
|
||||
37653231663338616466636632313761316635393966316265643865383633613430336537383537
|
||||
38383564613436393161326232613464623534313335333238626161633664663334646661373932
|
||||
34343834313431306662353664633465323638346462363131616636303735383033343663656337
|
||||
30323235613939643965663436623361356633643064643738653765656537353861313130653537
|
||||
63653532616439393032336264663466343230626234643461653534316563343962393233326236
|
||||
38613531386461343635363837316637356565666561646133656130633662623232336666653738
|
||||
61383432656164396662623332356261643936663162343366346462343136313132653465363164
|
||||
32333832373838663561616462303638373366303465333439663939366664323531643963323465
|
||||
61643636346539333739373661343033656536633732393634353663323666623839643361626533
|
||||
30313337343630393737363563646262333465653538616462663261303462623465646239366365
|
||||
39643333616131613433386531616666336366353234633263653365306232366466656263363263
|
||||
31643363396266616130366536623263353964343930336463643366316334386261333137646363
|
||||
38346165396466373761316339306632356362633832613266303565363036656363356235333336
|
||||
61653031323962363032623161646236393262623161646431323237666163663764643039393932
|
||||
36633062343261653464346563643934656638343833376135303365393137613338363835343664
|
||||
64653364656666303232616163373736613638386535306634333037626334393266633934353065
|
||||
33396664626431613533376536633031306263373965613631666232653735323039633334336661
|
||||
33393831643337663931303435383033343931356263376561343236653739313166396336623931
|
||||
66613762626237356166633966386532663461636230326465623239653531396333363465386161
|
||||
65643432663766346666323539326665346363353832333537333136323236353439623837373238
|
||||
31623037323835373532376665616439623030396465396233346131643437333435623738373738
|
||||
32336465663235653963656261613435636432653035396237653139383863616366613639643535
|
||||
32663536393134616535663133356162636631386333323562396337343439666565646431313931
|
||||
64336233333134643236316163393162383130386635303462383236383165663262373061643930
|
||||
64313362666538313165306161626436633635363837303537643438363130373538613165396363
|
||||
30316231376239616566376135383332613633306166366666303962626538303730343765363866
|
||||
66656333636564376666656164383635353636616431613337303036333933666533383963373234
|
||||
65306338623738616232643133653963343334663566343434646564353061333731653966336565
|
||||
37396638313862333165373239633064353534333162306466366466333566303236363134343638
|
||||
35666362633030616536636266326434666435633633313839386234646637383933653036356532
|
||||
34313535653764616465643132316264376265356566613537633735343832333362663731306235
|
||||
33373130646433626238396539613937373935636564656132626534393262336161333537613762
|
||||
31623530333838326538646131313736663736396332663834646163653538626533663431376635
|
||||
38353638626365393935353061633033663037366261633538656336393565613533643262303834
|
||||
62376330396337653039376634636430623561303266363564316661653464393238386632326462
|
||||
31363464356237643130336132316466646534336535653232613866353730336536373931393034
|
||||
31393834616337663533373330663464633936366437363033313539643839393537643162383233
|
||||
37616636643162316633376433313632323734666337356530356266626535346632366334636437
|
||||
36366537373830333231323436346339316636383131326532343763316633633965306238373062
|
||||
34366563353364303135626663373933636239313766356436336631336263326433383537643165
|
||||
34386135633739653730646564393163323563626363383962376439613763346463663031376135
|
||||
62613738666465396232303662373938386634356238383637303630656631306636656537626130
|
||||
65373932383631616662393139613466363237653338396235346165623063663066643863323031
|
||||
39656237633335633638316230623362623837626532613066353239396163336437613166306333
|
||||
39353533333361343266386338623133393336343539366132303639326665653533383732636462
|
||||
66386237396464643061366436643562663436623539356630666234663864306539346637306635
|
||||
33393932383730316339663963646431303562303838306532626237663162363466356437306636
|
||||
66326262646661653839313462303562396565366538306535376364343133363039663434646532
|
||||
30393230366166386665303834666565356631663934343433396537353939633138636465376333
|
||||
64313764356262353033363433326236356537303534363962393263303731313063613836633162
|
||||
31623032373731363631633130316465313232363431346661636237303462323335303762626336
|
||||
38626531353965656666363136613036653131323166346366306437636433636562666562636638
|
||||
31646636646633623137396662366236363364653332613233373835313061303130633038363531
|
||||
62316235303163356437356233393139323933303931643264333634373933343237666161356332
|
||||
37343161653939633632373065626338643961353663373161666632636665313736663433313034
|
||||
31303166623837653563666338373062373065623466623436633330626464633365613965626138
|
||||
64393333393465376439376539653735643863333230373862336665386135643338326634353638
|
||||
63616239363761643966646339333766363333623131633733336263356432663730333062643666
|
||||
34393965383239396535313837653264343539313432323963313962336664306635313861386139
|
||||
31313337326261353766616537326534343961623364663263306461653361653937333637353932
|
||||
37663363303737653732663330653536656539326133333735306562353563306361626538346637
|
||||
64396637623336333936363332363562346162303933363961376161313139323037386435393734
|
||||
32656663336232656238616365623561353339623231643933666266346538336364623633613066
|
||||
65376537386232616163643032396633366662336638663139336563666530646231643434653930
|
||||
30333966346261653537356136663361636464356665663564303866663837313231383066333034
|
||||
63363564313433643332636632303365366235316236303864353939653036623061356364313663
|
||||
36346432316363633266346166633932353139363335396234313761313636363064643236313131
|
||||
66666439633434303766663931363433303965343362333264356162326434363465363530656535
|
||||
37656163303839663536636539336461323030346237663938643764653134313630636364333361
|
||||
39326238666537343662353735366331346134363663383062333536353563613832313863316130
|
||||
32633931343861363439363463376535376136633530366464323239376436383962353031396331
|
||||
31663437353835363839623939613430613166616139663261653562643033343562633966366231
|
||||
32386537333332653437326533353131303632353561653965373234303038663663623937623866
|
||||
39643933313232326235393961633661646261376664326630386661386265623563323264623738
|
||||
32633866323866633662343364383930353061663839393462613261666164323230346234653262
|
||||
38646264393864323833306364363137626438613032333438366230356263396436383964616262
|
||||
32633861643365393664363538646532383963653763363539346363636134646465633239373863
|
||||
63363637616334653463633362363531333862376537633566653637393362366538623637613564
|
||||
39636134663463346261613636393533336637663932313438373438666630653861636130643062
|
||||
61363331646564623937313832363432643861643239323432353438363065663533333862623734
|
||||
36663330366563333232616461386664313864626136323364333864653030343962303763346530
|
||||
35343039656666646232396563366536626561666334663561633063653066343237613131333835
|
||||
34373932343864653839666363343363613739386364323539353666336264653431623031633331
|
||||
30356565346430633738336635373661616530363334333165633535653138383766636132363165
|
||||
38336139303936623532613234326662663332633337316465653533353436636638623431396461
|
||||
35663238613635663736343434656538333263336264326637346662376338633830656530633561
|
||||
63323665343962633034323037343435376530396534346635363166363161646230663364646161
|
||||
39323133613631376133363462323336616164386363333261326435393936323331346334633132
|
||||
65336663356333326237303938636634336562323161333061303137383065316165626265393666
|
||||
66623338643137303636363237653935656634376433323633356130643531633262383663336439
|
||||
39353734636231313864646164363262396239643931376331393136373931363138303963313661
|
||||
61643666313963373865396637653766326336646465336665663435656132613666626364653039
|
||||
32386534323130363563656332373238303231366132373361323437366661303734636239393030
|
||||
34623134306435366539643235393765346632383063353636333732656138366531653263376539
|
||||
63343963313062366230306239386131656533663036393936383965633535393963386564636437
|
||||
35346263333734346330663065623665663764653730366637343837363463643238343537666633
|
||||
32346261356164636362366465323137336538646230656661303031326361643438626137396537
|
||||
62636465336133333532336234643365653731306137323362636463333130306235316336653262
|
||||
62333063393438636433356265666163653737313362363239623239306133356438653338336439
|
||||
63323538383832396163626235346362623135643634633562666635353538353439396336643132
|
||||
38393937366464616132
|
||||
66306532353835666663633632373037633561613261613139306436626532656366336362343465
|
||||
3966653330313132663633663462363361373230623262370a623661366633623762656363616537
|
||||
66323464363164323131663335313264396538313237303432653532393631306635666138316261
|
||||
3738653338316132640a643935646530393362346431653966643061643334316238333632346265
|
||||
66633336316466356566336132626332623661316337613634373036646236363736376561643733
|
||||
66383830386336653236633933623037316632326266363136613031373439383834653134336237
|
||||
66363039316661353837383964363163353433383734656564313139383764346533313564616333
|
||||
36336231363661326638373963393265323365636665653034373536663232353266656365656338
|
||||
66313034646236356364323238326265633933346530393430373364393837376437623138306630
|
||||
35306266643835316136323232393630336330346133313963646539636463323862306236653335
|
||||
30356335366365356439653130376139616336346363656436356333333538373036313266353163
|
||||
39306365303630636135373731366334623165363336383261386334313061356461303664343133
|
||||
63383763633566393662623833346662366235323836353639306266383532333736386161393138
|
||||
36666662306233306439386639666434353639343137653831343666393463323865316464396636
|
||||
33646238363236303531323131613731343262353365306232343634313637613634626162363566
|
||||
64326238383331316365343566623464383732653333326534636365386230343836396234396634
|
||||
63646235356639363036313839643632333066653634323661313263313331393332656131393065
|
||||
65303338323466383161333237643433303961613266623134383936663866363337653535326133
|
||||
62323464636638643163313064373736353263356638666434333135656133336534343932613234
|
||||
32356361346366316262383232653835396435333837633737356335353837336632376337616364
|
||||
35616365633738366466623835653866663461393738396633343235316231636138333663383364
|
||||
63376164646563353335333133333665396132343439363861623734336335356663393735313837
|
||||
34323034336431643362313332633665653837353635303061376235306665336362323630376132
|
||||
36313539326336656134633564343538636264623932626164366138653035343732396464633863
|
||||
32613363383366326332383835316666366430623235636536353337373035386361373236363036
|
||||
31353865333933356561623661353133353864643038626366666431313831353234653430396331
|
||||
35653864633263613963333734636364366336613430623032666666666266613538663665623437
|
||||
30643562333561626636646337626234653936616438623738623364653561396638383564333262
|
||||
39323265346263366530643132303033343835353334373865373561613539613461343962316663
|
||||
32636461316234313832313635636431326134323638646164396537383963326439633063313063
|
||||
37353062616233323932343033376636613039343734336630303139616331626431616330396363
|
||||
65623565653235303630383534343739346234316337343233366530313238623139666538363430
|
||||
61613833663666386161356331656131356462376463373432316331626531393136393838313065
|
||||
34323361323836323561633032663833343537663637346330326337363165306237616335333233
|
||||
35656530303666633438303732623232383965633038616632633164663461393465336233643635
|
||||
30363334646161363234393533663064363364343838396562626232383036623236343664313366
|
||||
35646532383164393365343366633134393061633362303164393034653862653535613761356630
|
||||
65633634393033653363373235323933333766306165326237636530663737393063623664343031
|
||||
63643538366238363066666566333236653362633861346136663036373731626136383530356466
|
||||
33326230303864353838333136373736373963386638663164363139386638396265626365356535
|
||||
35396236306639316631366461373235326665643565326539333739393264373733363163366537
|
||||
31656366343831616339393065323331636136346236386131306533383436356566633830623163
|
||||
37303036663935376132323733353433306361383234343962633165616538626564653239393137
|
||||
65346236656266383130323662636565643033663933346337663836643765656266623563656430
|
||||
31386365646437306362643965653631373862623266303165386666626430663130666130323062
|
||||
36326331313838316339653231666138616332653564323635356366316237313662353531336636
|
||||
31666263313134656136663862303536366631663965343565646637663566656466646435613839
|
||||
39656230616465653465316633373561343237356637643336373535653438656137323264643239
|
||||
66363066666161316362383737333638336565613230306138343735633432356661386631383530
|
||||
64353161396463313532336430613862396537643436396562633665613736663965356335313131
|
||||
63303563383734353331656164313638386135343336346263643430323932366133306261663562
|
||||
32633363373537626633373433396565363032323536336263373835653363323661663834333365
|
||||
65636332383232653933363736363131653032666135373436663834656337653739333338636437
|
||||
62613463626437306133333632663662303732376364663339306637653534396433643665353366
|
||||
30633332383136306230613435346536323434666431653834333639343234613631323031643138
|
||||
38613536336465656232336238653532636664313766633432363364613937323337653464616461
|
||||
32653939386537663635653733336463303538333431303537323633623834623637666132613030
|
||||
31666539353762346335643134333637366533313833383634356266653831663333393661353439
|
||||
64353432393432333865306535643261376536663064323163393266373235623530626138316237
|
||||
63333631396234326534386238623937626661663265383631386662383866636231646531633562
|
||||
64323762616431663664613564366562303630313137353838323064333966323062643233353830
|
||||
37363763666530643535666235383062646163626164353037346365366332366162636563313361
|
||||
37343861373764653633393930316666613335393232663332323035386431326566663038613861
|
||||
37303061653936636234363937623162313731353961343337356663623362306461636438333131
|
||||
32376633663639333534396162383438373863633664383266626537343165396435346337343935
|
||||
62623232646432346362623430363665353036376564323734346536393430336135306335613238
|
||||
35633365333430626134353535623363396330343138616530613333633961303930623633663662
|
||||
65313032353232653233346665616562363138333639323562653035646431313365623036393665
|
||||
3363
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
62316431346466333036383039323736336662386634373664343961343732303963323361663530
|
||||
3038393463616438356133633430393535333335663236350a323064386662623762656138373763
|
||||
36343534333364666466656138313034393239626435323163376239333662373538323530646663
|
||||
3961386133613637320a333536636263646133303231386663386237626430626439373435333233
|
||||
66306661326232303032653066353433363839303630376237363538626537303765663065653336
|
||||
33346335363733343938393335626661626431343134353164396533373562396332616262666362
|
||||
62396662653461643331373664653735653563396330303165646233363266333562313532303164
|
||||
63363566353336646664373633376331633465353037656332333562663731373463636133303637
|
||||
32346231386463353864343465336333623136336663633531343830613935666535306131326666
|
||||
30353866646264313536333165373638373034346230373738666531613934313762613131333634
|
||||
36656566376535643833623631383539363163323933343662306365383732303764346665306363
|
||||
39336162653734303062346335656431366636626262666639393162346430343737376233613761
|
||||
38366263663062653332366137346235376261356666663331353430663836626339663064396461
|
||||
65386431646435313038653131633531326631386436333361316233306465333533393163653437
|
||||
38633765666362383236386130313961386266353463396138353439643232333965643062356334
|
||||
37326136396133373061323366383631663165396564623631653362623438336464356633303538
|
||||
64346435613736633839626561363161383435663333383133343030653835323131373937613435
|
||||
31396661613534636138616336333538663835623531313835616266653662353262616162646431
|
||||
34393366633433643536666230356635376332393632333531633139396432613463653030623564
|
||||
64356232653337613535326661633539333663316566616133663338656139656639393538306332
|
||||
65333036663563333733383439393332386137313437623834633231646433653233623037346535
|
||||
62386262373032646230303764323138623332353236653461393838316663633033353339623132
|
||||
39356438653366633464666638656630333438323936333035383764396334326637656238383932
|
||||
36313165353534336666626664373033616132643536366335333466346631323262616239343564
|
||||
38376135616264313461323739616663326631636431633937366534646366383430623062316537
|
||||
37313536663139656235663335636665633634626237303365326665383965636265353262643362
|
||||
65323963326430353362346235346434306133376334613831396635373936666565633232316465
|
||||
61316135336633356534356363636130353837653435343032663361363335623164373835613364
|
||||
64643365616165393436376263323439613637326434666639613164383066306365396463633633
|
||||
32633332346335623831383734653838323436346463633435333530363036393838346231663932
|
||||
38356663653066323966626137623334623739666463366166646636306638393638356332336630
|
||||
39626534666235613237343634313933653931343831316137656439653266393663343930303462
|
||||
34666266653162323231376564393662326430353965383364326337363333666562326262326233
|
||||
36383733646362303330303934326533653365643538623039366265663931613031373862366634
|
||||
31343835626430663962386532326666346261653236613132373535303937386535303432663766
|
||||
37313932366562643933303434623234393765363464666362323635646462326438303333393132
|
||||
32393735303039623135613033636532613763396362366565316536323933366631663765333033
|
||||
34356536646339346130383338316162646530326239373235663632643034616331356533363234
|
||||
32373365343435343561623265343237376265663039653634663538313062626633373238356262
|
||||
64356431353936663536363362626165383662343835626238353036393235343034643465653663
|
||||
30393861363965636436663732616165393231636235316533663264383265323763656536626166
|
||||
32363562656266656331353262356435353030323330663032653930363437313934633265333861
|
||||
33616531326633383237323231353866366531636437356230636330393533333331313566383138
|
||||
38303562643435383736363036353138626561323530393736666236346639326162383638303165
|
||||
39616361316632323936653734656264333764356431393635613833346434303861646264373337
|
||||
31623435646463346630336235653762656561633035343332636135393464393332633139643761
|
||||
66613964663862626664393133326638343336373962343566646231356261386339393162313438
|
||||
38303036323132353132653633333064346338653566346437356633666565643730343763373137
|
||||
36363432346633626336373934646635353264623834303431313466346536653839366661646636
|
||||
30616461653938633562613536393864376230393262313663666634303566333766626435643333
|
||||
63393461643266643538343132356130383262366463313132383239323838636361653638653437
|
||||
61383936303836323931666164373963656138343962326135623565623930346136656566373335
|
||||
35623132613663356430363139323936643137393337653438306361316464363734313135356362
|
||||
34636566663636363933363462666635643135323631356262323635323932363035323763623734
|
||||
34316637626263313734326466366364313732383465383062326137646262383130313365356463
|
||||
38376565396339346463653833303361646430323636623830646233633362353838333131386461
|
||||
64323464376361333239313739376436623830393937353934386339366339326439386564306434
|
||||
66396136656463643462353663633233333931316532346162653961383334656337636261663266
|
||||
39636331353566343966616166363066623561633837313062633038633137633264346663623730
|
||||
31336438643536396134643338316637333562663639366133663637646236613963353966643938
|
||||
30366364643165616435353062323330396631326137633034666330376633353466336230643466
|
||||
36626366313639373331303734353862336665643962303837393164616266323433316665626436
|
||||
31303137326331646539373863623638663839373461363135326132646632343764656538393035
|
||||
30663833653236396563393634373364306536323965656331666465643762643036633866343139
|
||||
33343438333137643733616530666466376563653535326261633933303539383032643439383030
|
||||
32643033346463366335303663363339323866316437383366393731373034323763363562333033
|
||||
35663464336636623835333632623166623163323237353831643666343564303632646539623461
|
||||
61613864326438653935396434613761376234306261396262323732393338376339613866643639
|
||||
36386537363536376135323862396363323062356161353638393063336466653437323838633862
|
||||
62663738353235663230636639616638313237313638626334633061633535373733613734626665
|
||||
38316464643035343261633466343238393632333530323562333066326334663932643337626530
|
||||
32373366323364306236653465633964326539646265346466633730396236366638313032613363
|
||||
32323332613562613835363433376562643431623266323131313031316163366137623434323030
|
||||
34336234363861366435393532616466363631313535303264643765346631396564613432616363
|
||||
64336364393563396132646166313163323666373638616136313061386561623338656538373033
|
||||
38373166333762323065326464363134346335653236613530313235333864393265383633663637
|
||||
32363134313230333039613137306135373964386230326561626137633133326463373935646239
|
||||
35316536623932323135306233383332333832396338366561666565323462656666363834346431
|
||||
61316139343634653538396233656262396466376263643236346438306630666534303337323565
|
||||
61343636303564363132393236363333653263353061376330653534333762346130653561623039
|
||||
66656135393864313934393233663738386430333534303432396534623831333363393439386135
|
||||
35616436303439653132356530626138373934383962396564646237316665323538396666366437
|
||||
30376339383233383664343965306534386166613964313534636261316537316637343631393836
|
||||
30613761323964636433613036653631303434346633623166636139326637363537613833386165
|
||||
34303032346137623736373563303464306232663066373931626532373639343535313830613135
|
||||
66656261646465366366313436313139376136373939396330393464346365383730626466613530
|
||||
36303663626337633735633636666164366237323635383664333938373362626164386233663165
|
||||
30643432356433346536663932616530326339383736343036333663383039613132303263646236
|
||||
38633939383866646534366663393434373464616165633335373034306133393666326439613761
|
||||
65373661346661366437663236663236663632356466386564376163636636343666303535653661
|
||||
66646465386133353539323863656131653238363633336239376131613531396336313562623331
|
||||
66393466613461393931343765303565383730356131663533346133386337316431366461343731
|
||||
38646562613462653733323163653062663332393438313238316530653165363762313537333961
|
||||
39666635363534646232386538396530316232363130666231643363336361336339653461326236
|
||||
61373932346234343537366433386335353636636666326164393364623035656530333036363632
|
||||
30643836393939646139646134636362336332383836663862663935383536613031316135613137
|
||||
62613065363265666165363732636437313536383037313863613937656437316331356630636161
|
||||
37386335303237313365346134356266336330303134646339353432333062303931336639613365
|
||||
64353431373862616363616330393034396630333232383661353533323034383762353062303538
|
||||
62326433366439393030373163656332353636343432633133626139613535363063353263393761
|
||||
65383238636564663061356561616430633033323233336530663335623538643466343165326434
|
||||
35313835386566326138663736613838613064306238383063376530636362303938656364653436
|
||||
32313364653439393132353961343264346231333732323537623065303839663939323466613834
|
||||
30393138346632623236356130346538643934623762663538666432343065643465663164386564
|
||||
39356565646566353830383338623939306161373437336230373166316530313331626139633039
|
||||
32336535633839643532626632356464336533623766626233336335366639346666663931306536
|
||||
64333239613736343534353663383232626638396438653262393835643138353466373936353234
|
||||
39626439663463636237306630376231343537623262313635316164316539613231343565333532
|
||||
66363539626638336637396532386437363438373530393165613434616162353561633839366533
|
||||
35643265646439393563303433386432316663643165613065306461313939636133613733373138
|
||||
31623965393466363831626135663335646661373136613934316532333964346230633238646539
|
||||
38613732393135363430663334316162623330663865393234343730653434386462366234343332
|
||||
39646636646630303964623662663437326161316635646361623833343136373333336463346230
|
||||
61353830383364393137343134306665306633396632633634326339393331303231343461623364
|
||||
32353131333133323939656637633664663437316666623438666335376264353637323562343935
|
||||
32336261653664303965316132353764346663656466323464643434373736393462616166636162
|
||||
66336563626536656533316165313735386334393533623038656664333438376536396264353030
|
||||
35366532613733346366353366623630306630623130653331363165346338343832373338393765
|
||||
30336130326639333334393338366362646235383635343139643136366630373761386438343130
|
||||
38613831663533626632623632653934653635633366353130663538326538316636383262386433
|
||||
34326163363136613861646438323132376139306533643765316435356363643235616365303932
|
||||
65303737306339633330633937363638663337636538623535323637383761666461306363616338
|
||||
63356364646463346437303665376266656466636265663864663163333032623836646533326437
|
||||
34316131633031363966316238643163613838653061383734366631653733633438313038333432
|
||||
36633963653366353431386261303264323931353465343333323339613138313562616464663931
|
||||
37663636376633333033383666323161656234346261363536343134343566656530346433383766
|
||||
61373166666530323637303737653733396333313335646666613936623630303262306565343239
|
||||
35363639393138323062393436306466383831656638666232616466343065363464313333333162
|
||||
32393539623737373231636235666233656132383966663964343161626563383965616161623666
|
||||
31356461653264353239356433646132316462386161356330663932353461386339346530653232
|
||||
33306566663061616133323230643930643030386633666133313132353436336135383336356563
|
||||
32393838333532383637363531396234623038386665336363303731376461306630663761303139
|
||||
64333130356538623032373839313864633561316565383434383962353738353666636366333765
|
||||
34353334646365616234623031393339663666633765636432666666336261343761333733396534
|
||||
65303064643535383866623363333162303333393461313964396365363666313134333033383233
|
||||
63393837636161653031633066326662366366663636313666663834376332356336666530396263
|
||||
66326634376365343635666130333936346133656263343463613763393738393862353934343237
|
||||
61316437383830636264326564346535646635386562613466323832343665636630346462333863
|
||||
32623537396538643964663936623031326265373066313637636232363364653538363064613262
|
||||
62306561373133373532376366336637393131383233393036313161363563303666303339363230
|
||||
65633263363064633837363362393632383966366337393030353132346465346463636535303062
|
||||
37316665653230656363313937663636336336333136306536303861303439366531323266336662
|
||||
62376339646334303233376134323065363938366162316461626566343235303761633132383433
|
||||
66303435633336313961333734353236623536653739336164353037343334386163326432303031
|
||||
37353630346164633766353365613662373936663265353962333566336238336533396639373839
|
||||
62346564646261303762663366303939393963393134303730383038326562353837623130396439
|
||||
66636535663137333535393864613464636334363132376562393531376132333230346632363230
|
||||
32306363336638326235663466333236646130336539333533306236653861313465343661613235
|
||||
32643633633832636336313431653134623234303534363838306337363164326531343061306264
|
||||
62643033326137643461636534623965343161636437326165303536343135393163643734373936
|
||||
61373237326663616461326462393431633765346330313136383030323736313533313662633438
|
||||
30616335373732303931643131383732646261333432323537393736313438616336306439626535
|
||||
65306137303464636330303765303663366436353063643434383631376462303530643836366632
|
||||
64613730316439666462613534383561343632323832383336636535626163316535383833313834
|
||||
61383433643637366561316665346335623135323361346532656139353261663531396464343638
|
||||
65653137303664613562333661363636623533333735616231623139343661353866623864363533
|
||||
62636131393364643938363463303465333430386564306531366436316365613063623866666666
|
||||
65653261363562653363306331666566336462613661646264306361663835633162323032616236
|
||||
33393663613762313033396136356339356538376633353837613366326634303438373036633362
|
||||
30613361633037356633376336353539616134663561663462633336373836373736646363306165
|
||||
33323935313131376531643733353965353761393532333835616534613062373237353932656234
|
||||
35356538633032383961326562346161356231613564656336343039616339306335666563323464
|
||||
31393961636330333966306332373837636135646465316235653533626261393865653932613930
|
||||
32376539343530326138656361356238653238643830663636656435383634336562306339366330
|
||||
37613663343837626661383235303238653533326436643236653034636139333630393934633462
|
||||
39613365636262613736316530663732623837653134653133363032623931663933666262323035
|
||||
38666662333835336464316434303436373663353333396162653333663234643139386332313762
|
||||
30303365646236653362376464656165366536303331393935303936306639656331636261646530
|
||||
39333332626565343964623136643734643664383662663133663431353161303639666437386638
|
||||
37653332613865636666373634626466623638326237656663323734303363636334643430626533
|
||||
39386437366430613737376433366539376637393963613137633162653130666535313363343437
|
||||
39363232366136343937343131303438353837613335326437333166643336306638623665616439
|
||||
65616662613331623137653539313462336138633739623036623264313835363435303262643031
|
||||
65316236636432346562643262353663656364353536666138623437373334623131613238353763
|
||||
61356664323066356533616563336231393432643038306464396664333236326332393161373963
|
||||
32663435383363356563363134623736363966613834663933633963383463313335643036613633
|
||||
63336661393531346534373231316537353539373738373433383666313435633433613031643538
|
||||
36326135306139353032656230663734383437623439333031323163643230613866323535663162
|
||||
37346161303935333966346565613234356331333031656431376238336438666239623032356435
|
||||
36653235663664303235303933626163616363633866393337326430376335303736626561386231
|
||||
34376563633963323565616136343765316365383538333765346365653432353261346533656661
|
||||
30346433333639626234643630366638616563623133646666323061366530646264363566333530
|
||||
32623161393733383036336238626236356361656633343732393438663937376163323865653366
|
||||
34613035623230613362346337343535313139363636353536656131353139363835616236663863
|
||||
62363666396338653732316133666536393663663030313531616437343761613637636233313431
|
||||
36306566303832393136663963323836653561653664666661356461313131636435306632343836
|
||||
64613839633264343239626430363632656162343233626330613538663362356561623965336232
|
||||
66393432343132643039383138323733353463323263663239303233316366626437336531313562
|
||||
31626561663962326431336138643438623836633262616533656434343436636134333066613065
|
||||
66633663643632313436616533326163343733393035636433303336613463333532633066633565
|
||||
38613932633632353434393433373738326166663764383765613136326630663434363764316431
|
||||
35353562653363363533363538646336646666393564613933303066333033653965333033316163
|
||||
61393666383935393261373335626262313661653639643830376265633562356638326336663432
|
||||
35333936313866383432666239313630613661613433303330363539303462366237313533636263
|
||||
63376331633865396639643530663237326338383535643930653233306166343834333061346463
|
||||
61353734613765356165346437336137346639616561643238613565323938386161326139623861
|
||||
31643866393765656263646663376638656237323532363935353961633361623862316431643861
|
||||
36333339386266396132613066323834376265396563326261646561323434323639343561613161
|
||||
38306464383031393633363764303930306163643365333532363138376365316239363361643962
|
||||
30393333646233363564643661373865373034663131656331386631616466333166373331643963
|
||||
64346234386338663464356165366461353365323737343165616439646463353661323534323331
|
||||
66643931636631616331383065613334333262633639636164333165373237623235316434326531
|
||||
30336663373437343264353032363737633838303034396561303035656234653333636366343463
|
||||
30393966336664386434303764356531326665376230623830303237346261666162633864393866
|
||||
63646332616135653138333437356565643333663730333263396466303234643331653836356431
|
||||
37316434366533316132336238373833346165303062633866623033623037646461346263623734
|
||||
62393039626239393435316538636433333634616161663833653564353637663864373264313530
|
||||
30343533306335623130
|
||||
@@ -0,0 +1,26 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
34633334666530383466643739336536363136366631613464383161656535656466616261663232
|
||||
6237633664336364643136643738643563653637613136360a363431663336626432616538623435
|
||||
35373839383830393334663037353262653763353935623332383534376436613161313934316338
|
||||
3930623638356537630a616339653631666163376134343535313235363234356664366234663038
|
||||
30376239633164643335336166663737346262313864626234663839333132386232346139666131
|
||||
33633463353330343037306365666463653039643235333566663164313730663738663036623539
|
||||
64636663613566656338636638383066353562306137376432346639316533303665613463333832
|
||||
37313361623639653533343536616566613865353733656338633833666263323433306431633635
|
||||
35393333346134333466323239666335613862663935353662373833343635393532633461653932
|
||||
38303034613166336632376264313961336665303332306165636663306237653336316330376236
|
||||
31313362616434663861333264306661653532316365306138333131643731346636646365353733
|
||||
62366335643566636631633630336231353666363965623664376231363164313362366164333431
|
||||
33323632366335646137666466316530613862373162376461623633333238616637373336333064
|
||||
39303761353139656333663362303365316131646633303238623031386137656263646364373163
|
||||
36336633323266393663336462626236353466353266656264343639303739313362313537396238
|
||||
36303637386266386665663163633438633763386232313861653438303965393938656166656562
|
||||
63373064396135346361633739663534666230356566366333636266643932316264343339303833
|
||||
38313233643536356232363636306363333463323133656536366662323963643637343365643035
|
||||
30393061343630633263303864336438653339323264396434623038363464366235626235326464
|
||||
62623861333264616331396230383831346163303433653236663738396164643937643663363834
|
||||
30316530623433313633653639363065343264353630613436393237363930326632343230343538
|
||||
64356230316530353663663534343739376138653266323037336163386130623361613632393037
|
||||
33376232666337316536613763623066653431303366656333646361613839323831623562613266
|
||||
36323263616364653666343264303338373232343063313266653661323933656662386237323637
|
||||
66666337356337343864613034633934656461653834306338313031366432353263
|
||||
@@ -1,3 +1,4 @@
|
||||
[ungrouped]
|
||||
jackson ansible_host=citadel.fntz.net ansible_user=iac
|
||||
bear ansible_host=fntz.net ansible_user=iac
|
||||
jade ansible_host=fntz.net ansible_user=alex
|
||||
jackson ansible_host=direct.jackson.alexav.gg ansible_user=root
|
||||
nas ansible_host=172.16.0.29 ansible_user=alex
|
||||
@@ -1,157 +1,128 @@
|
||||
- hosts: bear
|
||||
- hosts: jade
|
||||
|
||||
roles:
|
||||
- role: traefik
|
||||
tags: traefik_deploy
|
||||
vars:
|
||||
server: "bear"
|
||||
use_cloudflared: true
|
||||
server: "jade"
|
||||
|
||||
tasks:
|
||||
- name: Deploy Tinyauth
|
||||
import_tasks: tasks/auth/tinyauth.yml
|
||||
tags: tinyauth_deploy
|
||||
- name: Deploy Postgres
|
||||
import_tasks: tasks/infra/postgres.yml
|
||||
tags: postgres_deploy
|
||||
- name: Deploy MariaDB
|
||||
import_tasks: tasks/infra/mariadb.yml
|
||||
tags: mariadb_deploy
|
||||
- name: Deploy AdGuard Home
|
||||
import_tasks: tasks/utility/adguard.yml
|
||||
tags: adguard_deploy
|
||||
- name: Deploy Glance
|
||||
import_tasks: tasks/utility/glance.yml
|
||||
import_tasks: tasks/glance.yml
|
||||
tags: glance_deploy
|
||||
- name: Deploy Servarr
|
||||
import_tasks: tasks/servarr.yml
|
||||
tags: servarr_deploy
|
||||
- name: Deploy Dozzle
|
||||
import_tasks: tasks/utility/dozzle.yml
|
||||
import_tasks: tasks/dozzle.yml
|
||||
tags: dozzle_deploy
|
||||
- name: Deploy Cup
|
||||
import_tasks: tasks/utility/cup.yml
|
||||
import_tasks: tasks/cup.yml
|
||||
tags: cup_deploy
|
||||
- name: Deploy Homebridge
|
||||
import_tasks: tasks/utility/homebridge.yml
|
||||
import_tasks: tasks/homebridge.yml
|
||||
tags: homebridge_deploy
|
||||
- name: Deploy Code Server
|
||||
import_tasks: tasks/utility/codeserver.yml
|
||||
tags: codeserver_deploy
|
||||
- name: Deploy PiHole
|
||||
import_tasks: tasks/pihole.yml
|
||||
tags: pihole_deploy
|
||||
- name: Deploy PocketID
|
||||
import_tasks: tasks/auth/pocketid.yml
|
||||
import_tasks: tasks/pocketid.yml
|
||||
tags: pocketid_deploy
|
||||
- name: Deploy Scrobbling Setup
|
||||
import_tasks: tasks/media/scrobbling.yml
|
||||
tags: scrobbling_deploy
|
||||
- name: Deploy Ntfy
|
||||
import_tasks: tasks/ntfy.yml
|
||||
tags: ntfy_deploy
|
||||
- name: Deploy NZBGet
|
||||
import_tasks: tasks/nzbget.yml
|
||||
tags: nzbget_deploy
|
||||
- name: Deploy Tautulli
|
||||
import_tasks: tasks/tautulli.yml
|
||||
tags: tautulli_deploy
|
||||
- name: Deploy Tinyauth
|
||||
import_tasks: tasks/tinyauth.yml
|
||||
tags: tinyauth_deploy
|
||||
- name: Deploy Code Server
|
||||
import_tasks: tasks/codeserver.yml
|
||||
tags: codeserver_deploy
|
||||
- name: Deploy Dashdot
|
||||
import_tasks: tasks/dashdot.yml
|
||||
tags: dashdot_deploy
|
||||
- name: Deploy Romm
|
||||
import_tasks: tasks/romm.yml
|
||||
tags: romm_deploy
|
||||
- name: Deploy Owncloud
|
||||
import_tasks: tasks/owncloud.yml
|
||||
tags: owncloud_deploy
|
||||
- name: Deploy Excalidraw
|
||||
import_tasks: tasks/excalidraw.yml
|
||||
tags: excalidraw_deploy
|
||||
- name: Deploy Vaultwarden
|
||||
import_tasks: tasks/utility/vaultwarden.yml
|
||||
import_tasks: tasks/vaultwarden.yml
|
||||
tags: vaultwarden_deploy
|
||||
- name: Deploy Immich
|
||||
import_tasks: tasks/media/immich.yml
|
||||
import_tasks: tasks/immich.yml
|
||||
tags: immich_deploy
|
||||
- name: Deploy Plex
|
||||
import_tasks: tasks/media/plex.yml
|
||||
tags: plex_deploy
|
||||
- name: Deploy ErsatzTV
|
||||
import_tasks: tasks/media/ersatztv.yml
|
||||
tags: ersatztv_deploy
|
||||
- name: Deploy Frigate
|
||||
import_tasks: tasks/media/frigate.yml
|
||||
tags: frigate_deploy
|
||||
- name: Deploy Servarr
|
||||
import_tasks: tasks/media/servarr.yml
|
||||
tags: servarr_deploy
|
||||
- name: Deploy NZBGet
|
||||
import_tasks: tasks/media/nzbget.yml
|
||||
tags: nzbget_deploy
|
||||
- name: Deploy Navidrome
|
||||
import_tasks: tasks/navidrome.yml
|
||||
tags: navidrome_deploy
|
||||
- name: Deploy Drop
|
||||
import_tasks: tasks/drop.yml
|
||||
tags: drop_deploy
|
||||
- name: Deploy Home Assistant
|
||||
import_tasks: tasks/home-assistant.yml
|
||||
tags: home-assistant_deploy
|
||||
- name: Deploy Gluetun
|
||||
import_tasks: tasks/gluetun.yml
|
||||
tags: gluetun_deploy
|
||||
- name: Deploy QBittorrent
|
||||
import_tasks: tasks/qbittorrent.yml
|
||||
tags: qbittorrent_deploy
|
||||
- name: Deploy Jackett
|
||||
import_tasks: tasks/jackett.yml
|
||||
tags: jackett_deploy
|
||||
- name: Deploy NFL Proxy
|
||||
import_tasks: tasks/nfl-proxy.yml
|
||||
tags: nfl-proxy_deploy
|
||||
- name: Deploy Uptime Kuma
|
||||
import_tasks: tasks/utility/uptime-kuma.yml
|
||||
import_tasks: tasks/uptime-kuma.yml
|
||||
tags: uptime-kuma_deploy
|
||||
- name: Deploy Romm
|
||||
import_tasks: tasks/gaming/romm.yml
|
||||
tags: romm_deploy
|
||||
- name: Deploy Pelican
|
||||
import_tasks: tasks/gaming/pelican.yml
|
||||
tags: pelican_deploy
|
||||
- name: Deploy Docs
|
||||
import_tasks: tasks/utility/docs.yml
|
||||
tags: docs_deploy
|
||||
- name: Deploy Audiobookshelf
|
||||
import_tasks: tasks/media/audiobookshelf.yml
|
||||
tags: audiobookshelf_deploy
|
||||
- name: Deploy Cloudflared
|
||||
import_tasks: tasks/utility/cloudflared.yml
|
||||
tags: cloudflared_deploy
|
||||
- name: Deploy Gitea Runner
|
||||
import_tasks: tasks/infra/runner.yml
|
||||
tags: runner_deploy
|
||||
- name: Deploy Weatherstar
|
||||
import_tasks: tasks/media/weatherstar.yml
|
||||
tags: weatherstar_deploy
|
||||
- name: Deploy Duplicati
|
||||
import_tasks: tasks/utility/duplicati.yml
|
||||
tags: duplicati_deploy
|
||||
- name: Deploy CAdvisor
|
||||
import_tasks: tasks/utility/cadvisor.yml
|
||||
tags: cadvisor_deploy
|
||||
- name: Deploy Subber
|
||||
import_tasks: tasks/utility/subber.yml
|
||||
tags: subber_deploy
|
||||
- name: Deploy OWUI
|
||||
import_tasks: tasks/utility/owui.yml
|
||||
tags: owui_deploy
|
||||
- name: Deploy Ollama
|
||||
import_tasks: tasks/utility/ollama.yml
|
||||
tags: ollama_deploy
|
||||
- name: Deploy CouchDB for obsidian
|
||||
import_tasks: tasks/obsidian.yml
|
||||
tags: obsidian_deploy
|
||||
- name: Deploy Helium services
|
||||
import_tasks: tasks/helium.yml
|
||||
tags: helium_deploy
|
||||
|
||||
- hosts: jackson
|
||||
|
||||
roles:
|
||||
- role: traefik
|
||||
tags: traefik_deploy
|
||||
vars:
|
||||
server: "citadel"
|
||||
- role: fivem
|
||||
tags: fivem_deploy
|
||||
|
||||
tasks:
|
||||
- name: Deploy Gitea
|
||||
import_tasks: tasks/infra/gitea.yml
|
||||
import_tasks: tasks/gitea.yml
|
||||
tags: gitea_deploy
|
||||
- name: Deploy API
|
||||
import_tasks: tasks/utility/api.yml
|
||||
import_tasks: tasks/api.yml
|
||||
tags: api_deploy
|
||||
- name: Deploy Storage API
|
||||
import_tasks: tasks/utility/storage-api.yml
|
||||
import_tasks: tasks/storage-api.yml
|
||||
tags: storage-api_deploy
|
||||
- name: Deploy Plausible
|
||||
import_tasks: tasks/utility/plausible.yml
|
||||
import_tasks: tasks/plausible.yml
|
||||
tags: plausible_deploy
|
||||
- name: Deploy Database
|
||||
import_tasks: tasks/infra/mariadb.yml
|
||||
tags: mariadb_deploy
|
||||
- name: Deploy Floof
|
||||
import_tasks: tasks/gaming/floof.yml
|
||||
tags: floof_deploy
|
||||
- name: Deploy Tinyauth
|
||||
import_tasks: tasks/auth/tinyauth.yml
|
||||
tags: tinyauth_deploy
|
||||
- name: Deploy Postgres
|
||||
import_tasks: tasks/infra/postgres.yml
|
||||
tags: postgres_deploy
|
||||
- name: Deploy Dozzle
|
||||
import_tasks: tasks/utility/dozzle.yml
|
||||
tags: dozzle_deploy
|
||||
- name: Deploy Redis
|
||||
import_tasks: tasks/infra/redis.yml
|
||||
tags: redis_deploy
|
||||
- name: Deploy Garage
|
||||
import_tasks: tasks/infra/garage.yml
|
||||
tags: garage_deploy
|
||||
- name: Deploy Pelican
|
||||
import_tasks: tasks/gaming/pelican.yml
|
||||
tags: pelican_deploy
|
||||
- name: Deploy Tools
|
||||
import_tasks: tasks/utility/tools.yml
|
||||
tags: tools_deploy
|
||||
- name: Deploy Website
|
||||
import_tasks: tasks/utility/website.yml
|
||||
tags: website_deploy
|
||||
- name: Deploy Blog
|
||||
import_tasks: tasks/utility/blog.yml
|
||||
tags: blog_deploy
|
||||
- name: Deploy Owncloud
|
||||
import_tasks: tasks/owncloud.yml
|
||||
tags: owncloud_deploy
|
||||
|
||||
- hosts: nas
|
||||
|
||||
tasks:
|
||||
- name: Deploy Plex
|
||||
import_tasks: tasks/plex.yml
|
||||
tags: plex_deploy
|
||||
- name: Deploy Frigate
|
||||
import_tasks: tasks/frigate.yml
|
||||
tags: frigate_deploy
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items: "{{ directories }}"
|
||||
when: directories is defined
|
||||
|
||||
- name: Clone repository
|
||||
git:
|
||||
repo: "{{ build.git.repo }}"
|
||||
dest: "{{ build.git.dest }}"
|
||||
when: build is defined
|
||||
|
||||
- name: Create Docker volume
|
||||
docker_volume:
|
||||
name: "{{ volume_name }}"
|
||||
when: volume_name is defined
|
||||
|
||||
- name: Build Docker Image
|
||||
docker_image:
|
||||
name: "{{ image.name }}"
|
||||
tag: "{{ image.tag }}"
|
||||
build:
|
||||
nocache: true
|
||||
path: "{{ build.git.dest }}"
|
||||
dockerfile: Dockerfile
|
||||
source: build
|
||||
force_source: true
|
||||
state: present
|
||||
when: build is defined
|
||||
|
||||
- name: Create Docker Network
|
||||
docker_network:
|
||||
name: "{{ network_name }}"
|
||||
when: network_name is defined
|
||||
|
||||
- name: Create Docker Container
|
||||
docker_container:
|
||||
name: "{{ name }}"
|
||||
recreate: true
|
||||
restart_policy: always
|
||||
entrypoint: "{{ entrypoint | default(omit) }}"
|
||||
shm_size: "{{ shmSize | default(omit) }}"
|
||||
pull: "{{ build is not defined }}"
|
||||
published_ports: "{{ published_ports | default(omit) }}"
|
||||
network_mode: "{{ network_mode | default(omit) }}"
|
||||
image: "{{ image.name }}:{{ image.tag }}"
|
||||
etc_hosts: "{{ extra_hosts | default(omit) }}"
|
||||
command: "{{ command | default(omit) }}"
|
||||
networks: "{{ networks | default(omit) }}"
|
||||
volumes: "{{ volumes | default(omit) }}"
|
||||
env: "{{ env | default(omit) }}"
|
||||
labels: "{{ labels | default(omit) }}"
|
||||
healthcheck: "{{ healthcheck | default(omit) }}"
|
||||
devices: "{{ devices | default(omit) }}"
|
||||
mounts: "{{ mounts | default(omit) }}"
|
||||
pid_mode: "{{ pid_mode | default(omit) }}"
|
||||
privileged: "{{ privileged | default(omit) }}"
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/gitea"
|
||||
- "{{ data_dir }}/job"
|
||||
|
||||
- name: Check if Act Runner has been downloaded
|
||||
stat:
|
||||
path: "{{ data_dir }}/gitea/act_runner"
|
||||
register: act_runner
|
||||
|
||||
- name: Download Gitea Act Runner
|
||||
get_url:
|
||||
url: https://dl.gitea.com/act_runner/nightly/act_runner-nightly-linux-amd64
|
||||
dest: "{{ data_dir }}/gitea"
|
||||
mode: 0755
|
||||
when: not act_runner.stat.exists
|
||||
|
||||
- name: Copy Gitea Act Runner Config
|
||||
template:
|
||||
src: config.yml.j2
|
||||
dest: "{{ data_dir }}/gitea/config.yml"
|
||||
|
||||
- name: Check if Act Runner is a Systemd Service
|
||||
stat:
|
||||
path: "/etc/systemd/system/act_runner.service"
|
||||
register: act_runner_service
|
||||
|
||||
- name: Stop & remove systemd service
|
||||
become: yes
|
||||
shell: |
|
||||
systemctl stop act_runner.service &&
|
||||
rm /etc/systemd/system/act_runner.service
|
||||
- name: Create Systemd Service
|
||||
become: yes
|
||||
template:
|
||||
src: act_runner.service.j2
|
||||
dest: "/etc/systemd/system/act_runner.service"
|
||||
|
||||
- name: Enable Systemd Service
|
||||
become: yes
|
||||
command: systemctl enable act_runner.service
|
||||
- name: Start Systemd Service
|
||||
become: yes
|
||||
command: systemctl start act_runner.service
|
||||
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Gitea Actions runner
|
||||
Documentation=https://gitea.com/gitea/act_runner
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
ExecStart={{ data_dir }}/gitea/act_runner daemon --config={{ data_dir }}/gitea/config.yml
|
||||
ExecReload=/bin/kill -s HUP $MAINPID
|
||||
WorkingDirectory={{ data_dir }}/gitea
|
||||
TimeoutSec=0
|
||||
RestartSec=10
|
||||
Restart=always
|
||||
User=alex
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,16 @@
|
||||
log:
|
||||
level: info
|
||||
|
||||
runner:
|
||||
file: .runner
|
||||
capacity: 1
|
||||
timeout: 3h
|
||||
shutdown_timeout: 0s
|
||||
insecure: false
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 2s
|
||||
labels:
|
||||
- "runner:host"
|
||||
|
||||
host:
|
||||
workdir_parent: "{{ data_dir }}/gitea/job"
|
||||
@@ -25,12 +25,12 @@
|
||||
template:
|
||||
src: local-dynamic.yml.j2
|
||||
dest: "{{ data_dir }}/traefik/dynamic.yml"
|
||||
when: server == "bear"
|
||||
- name: Create Traefik Dynamic File (Citadel)
|
||||
when: server == "jade" or server == "nas"
|
||||
- name: Create Traefik Dynamic File (Remote)
|
||||
template:
|
||||
src: remote-dynamic.yml.j2
|
||||
dest: "{{ data_dir }}/traefik/dynamic.yml"
|
||||
when: server == "citadel"
|
||||
when: server == "jackson"
|
||||
|
||||
- name: Deploy Traefik Docker Container
|
||||
docker_container:
|
||||
@@ -38,7 +38,6 @@
|
||||
image: traefik
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
pull: true
|
||||
command:
|
||||
- --providers.file.directory=/config
|
||||
published_ports:
|
||||
@@ -53,14 +52,5 @@
|
||||
- "{{ data_dir }}/traefik/data:/data"
|
||||
- "{{ data_dir }}/traefik/traefik.yml:/traefik.yml"
|
||||
- "{{ data_dir }}/traefik/dynamic.yml:/dynamic.yml"
|
||||
networks: >-
|
||||
{{
|
||||
[{'name': docker_network_name}] +
|
||||
([{'name': 'tunnel'}] if use_cloudflared | default(false) else [])
|
||||
}}
|
||||
labels:
|
||||
traefik.http.routers.wildcard.rule: "HostRegexp(`{subdomain:.+}.fntz.net`)"
|
||||
traefik.http.routers.wildcard.tls: "true"
|
||||
traefik.http.routers.wildcard.tls.certresolver: letsencrypt
|
||||
traefik.http.routers.wildcard.tls.domains[0].main: fntz.net
|
||||
traefik.http.routers.wildcard.tls.domains[0].sans: "*.fntz.net,*.citadel.fntz.net"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
|
||||
@@ -12,11 +12,6 @@ entryPoints:
|
||||
scheme: https
|
||||
webSecure:
|
||||
address: ":443"
|
||||
transport:
|
||||
respondingTimeouts:
|
||||
readTimeout: 600s
|
||||
writeTimeout: 600s
|
||||
idleTimeout: 180s
|
||||
serversTransport:
|
||||
insecureSkipVerify: true
|
||||
providers:
|
||||
@@ -35,9 +30,3 @@ certificatesResolvers:
|
||||
dnsChallenge:
|
||||
provider: cloudflare
|
||||
delayBeforeCheck: 10
|
||||
accessLog:
|
||||
filters:
|
||||
statusCodes:
|
||||
- "200"
|
||||
- "400-404"
|
||||
- "500-503"
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
http:
|
||||
middlewares:
|
||||
tinyauth:
|
||||
forwardauth:
|
||||
address: http://tinyauth:3000/api/auth/traefik
|
||||
|
||||
routers:
|
||||
jtraefik:
|
||||
rule: "Host(`traefik.citadel.fntz.net`)"
|
||||
service: jtraefik
|
||||
plex:
|
||||
rule: "Host(`tv.fntz.net`)"
|
||||
service: plex
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
coolify:
|
||||
rule: "Host(`coolify.citadel.fntz.net`)"
|
||||
service: coolify
|
||||
jtraefik:
|
||||
rule: "Host(`traefik-jackson.fntz.net`)"
|
||||
service: jtraefik
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
@@ -26,40 +21,40 @@ http:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
homebridge:
|
||||
rule: "Host(`bridge.fntz.net`)"
|
||||
service: homebridge
|
||||
nflproxy:
|
||||
rule: "Host(`nfl.fntz.net`)"
|
||||
service: nflproxy
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
wings:
|
||||
rule: "Host(`wings.fntz.net`)"
|
||||
service: wings
|
||||
nvr:
|
||||
rule: "Host(`nvr.fntz.net`)"
|
||||
service: nvr
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
|
||||
|
||||
services:
|
||||
plex:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://172.16.0.29:32400"
|
||||
jtraefik:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://100.105.157.6:8080/"
|
||||
coolify:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://100.105.157.6:8000/"
|
||||
- url: "http://jackson:8080/"
|
||||
traefik:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://172.16.0.44:8080/"
|
||||
homebridge:
|
||||
- url: "http://jade:8080/"
|
||||
nflproxy:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://172.16.0.44:8581/"
|
||||
wings:
|
||||
- url: "http://jade:5000/"
|
||||
nvr:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://172.16.0.44:4000/"
|
||||
passHostHeader: true
|
||||
- url: "http://nas:5000/"
|
||||
@@ -1,31 +0,0 @@
|
||||
http:
|
||||
middlewares:
|
||||
tinyauth:
|
||||
forwardauth:
|
||||
address: http://tinyauth:3000/api/auth/traefik
|
||||
|
||||
routers:
|
||||
coolify:
|
||||
rule: "Host(`coolify.citadel.fntz.net`)"
|
||||
service: coolify
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
wings:
|
||||
rule: "Host(`wings.landite.games`)"
|
||||
service: wings
|
||||
entryPoints:
|
||||
- webSecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
|
||||
services:
|
||||
coolify:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://100.105.157.6:8000/"
|
||||
wings:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://5.161.64.174:8090/"
|
||||
@@ -2,98 +2,116 @@ import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
# c08dc6b088e90512fb8a2dafe9f1ae5de3f486d1
|
||||
# 894be8a440ba41aa228e53d7d523bcb1ae34da41
|
||||
|
||||
ignore_deploys_for = [ # don't auto-deploy these
|
||||
"tasks/infra/runner",
|
||||
"templates/runner",
|
||||
"roles/docker"
|
||||
]
|
||||
|
||||
def git_diff():
|
||||
args = sys.argv
|
||||
res = subprocess.run(f"git diff --name-only {args[1]} {args[2]}", capture_output=True, shell=True, text=True)
|
||||
return [x for x in res.stdout.strip().split("\n") if "tasks/" in x or "roles/" in x or "templates/" in x]
|
||||
return [x for x in res.stdout.strip().split("\n") if "tasks/" in x or "roles/" in x or "host_vars" in x]
|
||||
|
||||
def construct_command(tag = None, host = None):
|
||||
command = f"ANSIBLE_CONFIG=ansible.cfg /usr/bin/ansible-playbook main.yml --vault-password-file ~/.vault_pass.txt"
|
||||
|
||||
if host:
|
||||
command += f" -l {host}"
|
||||
if tag:
|
||||
command += f" --tags {tag}_deploy"
|
||||
|
||||
def construct_command(tags):
|
||||
command = f"ANSIBLE_CONFIG=ansible.cfg /usr/bin/ansible-playbook main.yml --tags={",".join(tags)} --vault-password-file ~/.vault_pass.txt"
|
||||
return command
|
||||
|
||||
def deploy(tags):
|
||||
print(f"[MAIN] Deploying...")
|
||||
command = construct_command(tags)
|
||||
def deploy(tag = None, host = None):
|
||||
command = construct_command(tag, host)
|
||||
|
||||
if tag:
|
||||
print(f"Deploying {tag}...\n")
|
||||
else:
|
||||
print(f"Deploying {host}...\n")
|
||||
res = subprocess.run(command, shell=True)
|
||||
|
||||
return res.returncode == 0
|
||||
|
||||
def get_normalized_task_name(container):
|
||||
if "tasks/" in container:
|
||||
split_path = container.split("/")
|
||||
if len(split_path) > 2:
|
||||
task_name = split_path[2].split(".")[0]
|
||||
else:
|
||||
task_name = split_path[1].split(".")[0]
|
||||
elif "roles/" or "templates/" in container:
|
||||
task_name = container.split("/")[1]
|
||||
else:
|
||||
task_name = False
|
||||
|
||||
return task_name
|
||||
|
||||
def main():
|
||||
dir_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../')
|
||||
tasks_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../tasks")
|
||||
diff = git_diff()
|
||||
host_vars_changed_for = []
|
||||
vpn_containers = [
|
||||
"tasks/qbittorrent.yml",
|
||||
"tasks/jackett.yml"
|
||||
]
|
||||
|
||||
print("Task environment variable: " + os.environ.get("TASK"))
|
||||
if os.environ.get("TASK"):
|
||||
diff = [os.environ.get("TASK")]
|
||||
deployable_containers = [os.environ.get("TASK")]
|
||||
else:
|
||||
diff = git_diff()
|
||||
deployable_containers = []
|
||||
# because these containers rely on gluetun for network, they need to be recreated when gluetun is recreated
|
||||
if "tasks/gluetun.yml" in diff:
|
||||
print("Gluetun detected in diff, queuing dependent containers for recreation")
|
||||
for container in vpn_containers:
|
||||
if container not in diff:
|
||||
diff.append(container)
|
||||
|
||||
removable_containers = []
|
||||
# when variables update for a host, recreate containers
|
||||
for file in diff:
|
||||
if "host_vars" in file:
|
||||
hostname = file.split("/")[1].split(".")[0]
|
||||
print(f"Secret file for '{hostname}' changed, will recreate containers on host after deployment")
|
||||
host_vars_changed_for.append(hostname)
|
||||
|
||||
if not os.environ.get("TASK"):
|
||||
for file in diff:
|
||||
if os.path.exists(os.path.join(dir_path, file)):
|
||||
deployable_containers.append(file)
|
||||
deployed = []
|
||||
failed = []
|
||||
for file in diff:
|
||||
# separating these for now because roles will typically
|
||||
# have a bunch of other things tied to them
|
||||
if "roles/" not in file and "host_vars/" not in file:
|
||||
task_name = file.split("/")[1].split(".")[0]
|
||||
task_file_path = os.path.join(tasks_path, file.split("/")[1])
|
||||
|
||||
if not os.path.exists(task_file_path):
|
||||
print(f"{task_name} doesn't exist, running cleanup")
|
||||
res = subprocess.run(f"/usr/bin/docker container stop {task_name}", shell=True)
|
||||
if res.returncode == 0:
|
||||
subprocess.run(f"/usr/bin/docker container rm {task_name}", shell=True)
|
||||
subprocess.run("/usr/bin/docker image prune -f", shell=True)
|
||||
subprocess.run("/usr/bin/docker container prune -f", shell=True)
|
||||
|
||||
print(f"Cleaned up container {task_name}")
|
||||
|
||||
if "host_vars" not in file:
|
||||
# deploy the task, regardless of its status
|
||||
if "roles/" not in file:
|
||||
if task_name not in deployed:
|
||||
task = deploy(tag=task_name)
|
||||
else:
|
||||
removable_containers.append(file)
|
||||
task_name = file.split("/")[1]
|
||||
|
||||
print(f"[MAIN] Deployable: {len(deployable_containers)}")
|
||||
print(f"[MAIN] Removable: {len(removable_containers)}")
|
||||
if task_name not in deployed:
|
||||
task = deploy(tag=task_name)
|
||||
|
||||
if len(deployable_containers) > 0:
|
||||
to_deploy = []
|
||||
if not os.environ.get("TASK"):
|
||||
for container in deployable_containers:
|
||||
task_name = get_normalized_task_name(container)
|
||||
if task_name:
|
||||
to_deploy.append(task_name + "_deploy")
|
||||
else:
|
||||
to_deploy.append(os.environ.get("TASK"))
|
||||
if not task:
|
||||
failed.append(task_name)
|
||||
else:
|
||||
deployed.append(task_name)
|
||||
|
||||
if len(to_deploy) > 0:
|
||||
result = deploy(to_deploy)
|
||||
if len(host_vars_changed_for) > 0:
|
||||
for host in host_vars_changed_for:
|
||||
print(f"Redeploying containers on {host} due to host vars update")
|
||||
task = deploy(host=host)
|
||||
if task:
|
||||
deployed.append(host)
|
||||
else:
|
||||
failed.append(host)
|
||||
|
||||
if len(removable_containers) > 0:
|
||||
for container in removable_containers:
|
||||
task_name = get_normalized_task_name(container)
|
||||
result = subprocess.run(
|
||||
f'/usr/bin/docker ps --filter "name={task_name}" -q',
|
||||
shell=True,
|
||||
capture_output=True
|
||||
)
|
||||
result.check_returncode() # fail the action if this doesn't succeed
|
||||
for line in result.stdout.splitlines():
|
||||
container_id = line.strip().decode("utf8")
|
||||
if not container_id:
|
||||
continue
|
||||
print(f"[MAIN] Found Docker container {container_id} related to {task_name}, removing..")
|
||||
subprocess.run(f"/usr/bin/docker container stop {container_id}", shell=True)
|
||||
subprocess.run(f"/usr/bin/docker container rm {container_id}", shell=True)
|
||||
subprocess.run("/usr/bin/docker image prune -af", shell=True)
|
||||
subprocess.run("/usr/bin/docker container prune -f", shell=True)
|
||||
|
||||
if len(failed) <= 0 and len(deployed) > 0:
|
||||
print("\n---------------------")
|
||||
print(" Deployment succeeded!")
|
||||
print(f" All tasks: {", ".join(deployed)}")
|
||||
print("---------------------\n")
|
||||
sys.exit(0)
|
||||
elif len(failed) > 0:
|
||||
print("\n---------------------")
|
||||
print(" Deployment failed!")
|
||||
print(f" Failed tasks: {", ".join(failed)}")
|
||||
print(f" All tasks: {", ".join(deployed)}")
|
||||
print("---------------------\n")
|
||||
sys.exit(1)
|
||||
elif len(deployed) <= 0:
|
||||
print("Successfully executed, no tasks required execution")
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -10,39 +10,21 @@ if os.path.exists(host_vars_path):
|
||||
|
||||
vaults = os.listdir(host_vars_path)
|
||||
|
||||
# 1st run - extract ungrouped, global variables
|
||||
for vault in vaults:
|
||||
vault_path = os.path.join(host_vars_path, vault)
|
||||
vault_contents = subprocess.run(f'ansible-vault decrypt "{vault_path}" --vault-password-file ~/.vault_pass.txt --output -', shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
||||
stdout = vault_contents.stdout.strip().splitlines()
|
||||
|
||||
for line in stdout:
|
||||
if line.startswith("#"):
|
||||
break
|
||||
elif line.split(":")[0] not in file_contents:
|
||||
file_contents += f"{line.split(":")[0]}:\n"
|
||||
if line.startswith("#") and line not in file_contents:
|
||||
file_contents += f"\n{line}\n"
|
||||
|
||||
# 2nd run - extract service-specific variables
|
||||
for vault in vaults:
|
||||
vault_path = os.path.join(host_vars_path, vault)
|
||||
vault_contents = subprocess.run(f'ansible-vault decrypt "{vault_path}" --vault-password-file ~/.vault_pass.txt --output -', shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
|
||||
stdout = vault_contents.stdout.strip().splitlines()
|
||||
if ":" in line:
|
||||
if line.split(":")[0] not in file_contents:
|
||||
file_contents += f'{line.split(":")[0]}:\n'
|
||||
|
||||
has_found_start = False
|
||||
for line in stdout:
|
||||
if has_found_start or line.startswith("#"):
|
||||
if not has_found_start:
|
||||
has_found_start = True
|
||||
|
||||
if line.startswith("#") and line not in file_contents:
|
||||
file_contents += f"\n{line}\n"
|
||||
|
||||
if ":" in line:
|
||||
if line.split(":")[0] not in file_contents:
|
||||
file_contents += f'{line.split(":")[0]}:\n'
|
||||
|
||||
with open(os.path.join(host_vars_path, 'all.template.yml'), 'w', encoding="utf8") as template_file:
|
||||
template_file.write(file_contents)
|
||||
template_file.close()
|
||||
with open(os.path.join(host_vars_path, 'all.template.yml'), 'w', encoding="utf8") as template_file:
|
||||
template_file.write(file_contents)
|
||||
template_file.close()
|
||||
|
||||
print("Written to disk!")
|
||||
@@ -1,83 +0,0 @@
|
||||
import requests
|
||||
import subprocess
|
||||
import os
|
||||
import yaml
|
||||
|
||||
DISCORD_WEBHOOK_URL = os.environ.get("UPDATES_DISCORD_WEBHOOK")
|
||||
|
||||
def search_for_image(image_name):
|
||||
tasks_folder = os.path.realpath(os.path.join('./', 'tasks'))
|
||||
if "library/" in image_name:
|
||||
image_name = image_name.replace("library/", "")
|
||||
image_name = image_name.split(":")[0]
|
||||
|
||||
for category in os.listdir(tasks_folder):
|
||||
tasks = os.listdir(os.path.join(tasks_folder, category))
|
||||
for task in tasks:
|
||||
with open(os.path.join(tasks_folder, category, task), 'r') as file:
|
||||
data = yaml.safe_load(file)
|
||||
|
||||
for key in data:
|
||||
if "vars" in key:
|
||||
if image_name in key["vars"]["image"]["name"] or image_name == key["vars"]["image"]["name"]:
|
||||
return f"{task.split(".")[0]}_deploy"
|
||||
|
||||
def main():
|
||||
update_list = requests.get("https://cup.fntz.net/api/v3/json")
|
||||
update_list.raise_for_status()
|
||||
update_list = update_list.json()
|
||||
refs = []
|
||||
deployable_tags = []
|
||||
|
||||
for image in update_list["images"]:
|
||||
reference = image["reference"]
|
||||
|
||||
# don't attempt to update if unable
|
||||
if not image["in_use"]:
|
||||
continue
|
||||
if ":latest" not in reference:
|
||||
continue
|
||||
if image["result"] and not image["result"]["has_update"]:
|
||||
continue
|
||||
|
||||
refs.append(reference)
|
||||
|
||||
print("attempting to match images to references: " + ", ".join(refs))
|
||||
for reference in refs:
|
||||
tag = search_for_image(reference)
|
||||
if tag:
|
||||
deployable_tags.append(tag)
|
||||
else:
|
||||
print("Could not find suitable container for " + reference)
|
||||
|
||||
if len(deployable_tags) > 0:
|
||||
print(f"Found {len(deployable_tags)}, deploying..")
|
||||
tag_string = ",".join(deployable_tags)
|
||||
subprocess.run(f'ANSIBLE_CONFIG=ansible.cfg ansible-playbook main.yml --tags {tag_string} -l bear --vault-password-file=~/.vault_pass.txt', shell=True)
|
||||
|
||||
print("Attempting to clean up dangling/unassumed images")
|
||||
subprocess.run(f"docker image prune -af", shell=True)
|
||||
|
||||
print("Redeployed all images, refreshing Cup")
|
||||
requests.get("https://cup.fntz.net/api/v3/refresh")
|
||||
|
||||
if DISCORD_WEBHOOK_URL:
|
||||
print("sending discord notification..")
|
||||
body = {
|
||||
"username": "Homelab Updates",
|
||||
"embeds": [
|
||||
{
|
||||
"title": "Updated containers automatically!",
|
||||
"description": f"Automatically redeployed containers recognized to need updates via Cup\n```{", ".join(deployable_tags)}```"
|
||||
}
|
||||
]
|
||||
}
|
||||
headers = {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
requests.post(DISCORD_WEBHOOK_URL, json=body, headers=headers)
|
||||
else:
|
||||
print("All up to date! :)")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
- name: "Create file structure"
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/api"
|
||||
- "{{ data_dir }}/api/db"
|
||||
- "{{ data_dir }}/api/app"
|
||||
|
||||
- name: "Clone latest API"
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/api.git
|
||||
dest: "{{ data_dir }}/api/app"
|
||||
|
||||
- name: "Build API Docker Image"
|
||||
docker_image:
|
||||
name: api
|
||||
tag: "latest"
|
||||
build:
|
||||
nocache: true
|
||||
path: "{{ data_dir }}/api/app"
|
||||
dockerfile: Dockerfile
|
||||
source: build
|
||||
force_source: true
|
||||
state: present
|
||||
|
||||
- name: Create API Network
|
||||
docker_network:
|
||||
name: api
|
||||
|
||||
- name: Deploy Redis Container
|
||||
docker_container:
|
||||
name: api_redis
|
||||
image: redis:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: api
|
||||
|
||||
- name: Deploy Database Container
|
||||
docker_container:
|
||||
name: api_postgres
|
||||
image: postgres:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: api
|
||||
volumes:
|
||||
- "{{ data_dir }}/api/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
POSTGRES_USER: "api"
|
||||
POSTGRES_PASSWORD: "{{ API_POSTGRES_PASSWORD }}"
|
||||
PGDATA: "/var/lib/postgresql/data/pgdata"
|
||||
|
||||
- name: Deploy API Container
|
||||
docker_container:
|
||||
name: api
|
||||
image: api:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: api
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
NODE_ENV: "production"
|
||||
VERSION: "v4"
|
||||
REDIS_URL: "redis://api_redis:6379"
|
||||
ADMIN_KEY: "{{ API_ADMIN_KEY }}"
|
||||
ADMIN_BYPASS_KEY: "{{ API_ADMIN_KEY }}"
|
||||
DATABASE_URL: "{{ API_DATABASE_URL }}"
|
||||
LASTFM_API_KEY: "{{ API_LASTFM_API_KEY }}"
|
||||
STEAM_API_KEY: "{{ API_STEAM_API_KEY }}"
|
||||
CONTACT_WEBHOOK: "{{ API_CONTACT_WEBHOOK }}"
|
||||
JWT_KEY: "{{ API_JWT_KEY }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.aapi.rule: Host(`api.alexav.gg`)
|
||||
traefik.http.routers.aapi.entrypoints: webSecure
|
||||
traefik.http.routers.aapi.tls.certresolver: letsencrypt
|
||||
traefik.http.services.aapi.loadbalancer.server.url: http://api:3000
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
- name: Deploy Tinyauth
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: tinyauth
|
||||
image:
|
||||
name: ghcr.io/steveiliop56/tinyauth
|
||||
tag: v5
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
env:
|
||||
TINYAUTH_AUTH_USERS: "{{ TINYAUTH_USERS }}"
|
||||
TINYAUTH_APPURL: "{{ TINYAUTH_APP_URL }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_CLIENTID: "{{ TINYAUTH_GENERIC_CLIENT_ID }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_CLIENTSECRET: "{{ TINYAUTH_GENERIC_CLIENT_SECRET }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_AUTHURL: "{{ TINYAUTH_GENERIC_AUTH_URL }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_TOKENURL: "{{ TINYAUTH_GENERIC_TOKEN_URL }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_USERINFOURL: "{{ TINYAUTH_GENERIC_USER_URL }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_SCOPES: "{{ TINYAUTH_GENERIC_SCOPES }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_NAME: "{{ TINYAUTH_GENERIC_NAME }}"
|
||||
TINYAUTH_OAUTH_PROVIDERS_POCKETID_REDIRECTURL: "{{ TINYAUTH_REDIRECT_URL }}"
|
||||
TINYAUTH_OAUTH_WHITELIST: "{{ TINYAUTH_OAUTH_WHITELIST }}"
|
||||
TINYAUTH_UI_TITLE: "{{ TINYAUTH_APP_TITLE }}"
|
||||
TINYAUTH_UI_BACKGROUNDIMAGE: "{{ TINYAUTH_BACKGROUND_IMAGE }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.tinyauth.rule: Host(`{{ TINYAUTH_HOSTNAME }}`)
|
||||
traefik.http.routers.tinyauth.entrypoints: webSecure
|
||||
traefik.http.routers.tinyauth.tls.certresolver: letsencrypt
|
||||
traefik.http.middlewares.tinyauth.forwardauth.address: http://tinyauth:3000/api/auth/traefik
|
||||
@@ -1,14 +1,23 @@
|
||||
---
|
||||
- name: Deploy Code Server
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: "codeserver"
|
||||
directories:
|
||||
- "{{ data_dir }}/code-server"
|
||||
image:
|
||||
name: lscr.io/linuxserver/code-server
|
||||
tag: latest
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/code-server"
|
||||
|
||||
- name: Pull latest Code Server Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/code-server
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Code Server Docker Container
|
||||
docker_container:
|
||||
name: codeserver
|
||||
image: lscr.io/linuxserver/code-server:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
- name: Pull latest Cup Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/sergi0g/cup
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Cup Docker Container
|
||||
docker_container:
|
||||
name: Cup
|
||||
image: ghcr.io/sergi0g/cup
|
||||
command: serve
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.cup.rule: Host(`cup.fntz.net`)
|
||||
traefik.http.routers.cup.entrypoints: webSecure
|
||||
traefik.http.routers.cup.tls.certresolver: letsencrypt
|
||||
traefik.http.services.cup.loadbalancer.server.port: "8000"
|
||||
traefik.http.routers.cup.middlewares: tinyauth
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
- name: Pull latest Dashdot Docker Image
|
||||
docker_image:
|
||||
name: mauricenino/dashdot
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Dashdot Docker Container
|
||||
docker_container:
|
||||
name: dashdot
|
||||
image: mauricenino/dashdot
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "/:/mnt/host:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.dash.rule: Host(`stats.fntz.net`)
|
||||
traefik.http.routers.dash.entrypoints: webSecure
|
||||
traefik.http.routers.dash.tls.certresolver: letsencrypt
|
||||
traefik.http.services.dash.loadbalancer.server.port: "3001"
|
||||
@@ -1,14 +1,18 @@
|
||||
---
|
||||
- name: Deploy Dozzle
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Pull latest Dozzle Docker Image
|
||||
docker_image:
|
||||
name: amir20/dozzle
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Dozzle Docker Container
|
||||
docker_container:
|
||||
name: dozzle
|
||||
image: amir20/dozzle:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
image:
|
||||
name: amir20/dozzle
|
||||
tag: latest
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
env:
|
||||
@@ -16,7 +20,7 @@
|
||||
DOZZLE_ENABLE_SHELL: "{{ DOZZLE_SHELL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.dz.rule: Host(`{{ DOZZLE_URL }}`)
|
||||
traefik.http.routers.dz.rule: Host(`logs.fntz.net`)
|
||||
traefik.http.routers.dz.entrypoints: webSecure
|
||||
traefik.http.routers.dz.tls.certresolver: letsencrypt
|
||||
traefik.http.services.dz.loadbalancer.server.port: "8080"
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/drop"
|
||||
- "{{ data_dir }}/drop/db"
|
||||
- "{{ data_dir }}/drop/app"
|
||||
|
||||
- name: Create Drop Network
|
||||
docker_network:
|
||||
name: drop
|
||||
|
||||
- name: Pull latest Drop Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/drop-oss/drop
|
||||
tag: v0.3.3
|
||||
source: pull
|
||||
|
||||
- name: Create Drop DB Container
|
||||
docker_container:
|
||||
name: drop_postgres
|
||||
image: postgres:14-alpine
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: drop
|
||||
healthcheck:
|
||||
test: pg_isready -d drop -U drop
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
interval: 30s
|
||||
timeout: 60s
|
||||
volumes:
|
||||
- "{{ data_dir }}/drop/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
POSTGRES_PASSWORD: "drop"
|
||||
POSTGRES_USER: "drop"
|
||||
POSTGRES_DB: "drop"
|
||||
|
||||
- name: Create Drop Container
|
||||
docker_container:
|
||||
name: drop
|
||||
image: ghcr.io/drop-oss/drop:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: drop
|
||||
volumes:
|
||||
- "{{ media_path }}/Games/Desktop:/library"
|
||||
- "{{ data_dir }}/drop/app:/data"
|
||||
env:
|
||||
DATABASE_URL: "postgres://drop:drop@drop_postgres:5432/drop"
|
||||
GIANT_BOMB_API_KEY: "{{ DROP_GIANT_BOMB_API_KEY }}"
|
||||
EXTERNAL_URL: "https://games.fntz.net"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.drop.rule: Host(`games.fntz.net`)
|
||||
traefik.http.routers.drop.entrypoints: webSecure
|
||||
traefik.http.routers.drop.tls.certresolver: letsencrypt
|
||||
traefik.http.services.drop.loadbalancer.server.port: "3000"
|
||||
@@ -0,0 +1,21 @@
|
||||
---
|
||||
- name: Pull latest Excalidraw Docker Image
|
||||
docker_image:
|
||||
name: excalidraw/excalidraw
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Excalidraw Docker Container
|
||||
docker_container:
|
||||
name: excalidraw
|
||||
image: excalidraw/excalidraw
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.draw.rule: Host(`draw.fntz.net`)
|
||||
traefik.http.routers.draw.entrypoints: webSecure
|
||||
traefik.http.routers.draw.tls.certresolver: letsencrypt
|
||||
traefik.http.services.draw.loadbalancer.server.port: "80"
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/frigate"
|
||||
|
||||
- name: Pull latest Frigate Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/blakeblackshear/frigate
|
||||
tag: stable
|
||||
source: pull
|
||||
|
||||
- name: Deploy Frigate Docker Container
|
||||
docker_container:
|
||||
name: frigate
|
||||
image: ghcr.io/blakeblackshear/frigate:stable
|
||||
recreate: true
|
||||
privileged: true
|
||||
restart_policy: unless-stopped
|
||||
published_ports:
|
||||
- "5000:5000"
|
||||
- "8555:8555/tcp"
|
||||
- "8555:8555/udp"
|
||||
- "8554:8554"
|
||||
devices:
|
||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- "{{ data_dir }}/frigate:/config"
|
||||
- "{{ FRIGATE_RECORDINGS_PATH }}:/media/frigate"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.frigate.rule: Host(`nvr.fntz.net`)
|
||||
traefik.http.routers.frigate.entrypoints: webSecure
|
||||
traefik.http.routers.frigate.tls.certresolver: letsencrypt
|
||||
traefik.http.services.frigate.loadbalancer.server.port: "5000"
|
||||
@@ -1,23 +0,0 @@
|
||||
---
|
||||
- name: Deploy Floof
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: floofs_adventure
|
||||
directories:
|
||||
- "{{ data_dir }}/floof"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
build:
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/floofs-adventure.git
|
||||
dest: "{{ data_dir }}/floof"
|
||||
image:
|
||||
name: floofs-adventure
|
||||
tag: latest
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.floof.rule: Host(`floof.alexav.gg`)
|
||||
traefik.http.routers.floof.entrypoints: webSecure
|
||||
traefik.http.routers.floof.tls.certresolver: letsencrypt
|
||||
traefik.http.services.floof.loadbalancer.server.port: "3001"
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pelican"
|
||||
|
||||
- name: Create Pelican Caddyfile
|
||||
template:
|
||||
src: templates/pelican/Caddyfile
|
||||
dest: "{{ data_dir }}/pelican/Caddyfile"
|
||||
|
||||
- name: Deploy Pelican Panel
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: Pelican
|
||||
image:
|
||||
name: ghcr.io/pelican-dev/panel
|
||||
tag: latest
|
||||
volumes:
|
||||
- "pelican-data:/pelican-data"
|
||||
- "pelican-logs:/var/www/html/storage/logs"
|
||||
- "{{ data_dir }}/pelican/Caddyfile:/etc/caddy/Caddyfile"
|
||||
etc_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
XDG_DATA_HOME: /pelican-data
|
||||
TRUSTED_PROXIES: "172.18.0.0/16"
|
||||
APP_URL: "https://{{ PELICAN_APP_URL }}"
|
||||
ADMIN_EMAIL: "{{ PELICAN_EMAIL }}"
|
||||
BEHIND_PROXY: "true"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pelican.rule: Host(`{{ PELICAN_APP_URL }}`)
|
||||
traefik.http.routers.pelican.entrypoints: webSecure
|
||||
traefik.http.routers.pelican.tls.certresolver: letsencrypt
|
||||
traefik.http.services.pelican.loadbalancer.server.port: "80"
|
||||
@@ -1,89 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pterodactyl"
|
||||
- "{{ data_dir }}/pterodactyl/var"
|
||||
- "{{ data_dir }}/pterodactyl/logs"
|
||||
- "{{ data_dir }}/pterodactyl/nginx"
|
||||
- "{{ data_dir }}/pterodactyl/db"
|
||||
|
||||
- name: Create Pterodactyl Network
|
||||
docker_network:
|
||||
name: pterodactyl
|
||||
|
||||
- name: Pull latest MariaDB Docker Image
|
||||
docker_image:
|
||||
name: mariadb
|
||||
tag: "10.5"
|
||||
source: pull
|
||||
- name: Pull latest Redis Docker image
|
||||
docker_image:
|
||||
name: redis
|
||||
tag: 7-alpine
|
||||
source: pull
|
||||
- name: Pull latest Pterodactyl Docker image
|
||||
docker_image:
|
||||
name: ghcr.io/pterodactyl/panel
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Redis Container
|
||||
docker_container:
|
||||
name: pterodactyl_redis
|
||||
image: redis:7-alpine
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
|
||||
- name: Create Database Container
|
||||
docker_container:
|
||||
name: pterodactyl_db
|
||||
image: mariadb:10.5
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
volumes:
|
||||
- "{{ data_dir }}/pterodactyl/db:/var/lib/mysql"
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
env:
|
||||
MYSQL_DATABASE: "panel"
|
||||
MYSQL_USER: "pterodactyl"
|
||||
MYSQL_ROOT_PASSWORD: "{{ PTERODACTYL_MYSQL_ROOT_PASSWORD }}"
|
||||
MYSQL_PASSWORD: "{{ PTERODACTYL_MYSQL_PASSWORD }}"
|
||||
|
||||
- name: Create Pterodactyl Docker Container
|
||||
docker_container:
|
||||
name: pterodactyl
|
||||
image: ghcr.io/pterodactyl/panel:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/pterodactyl/nginx:/etc/nginx/http.d"
|
||||
- "{{ data_dir }}/pterodactyl/logs:/app/storage/logs"
|
||||
- "{{ data_dir }}/pterodactyl/var:/app/var"
|
||||
env:
|
||||
APP_URL: "{{ PTERODACTYL_APP_URL }}"
|
||||
APP_ENVIRONMENT_ONLY: "false"
|
||||
APP_TIMEZONE: "{{ TZ }}"
|
||||
DB_PASSWORD: "{{ PTERODACTYL_MYSQL_PASSWORD }}"
|
||||
APP_ENV: "production"
|
||||
CACHE_DRIVER: "redis"
|
||||
SESSION_DRIVER: "redis"
|
||||
QUEUE_DRIVER: "redis"
|
||||
REDIS_HOST: "pterodactyl_redis"
|
||||
DB_HOST: "pterodactyl_db"
|
||||
TRUSTED_PROXIES: "*"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.panel.rule: Host(`{{ PTERODACTYL_APP_URL }}`)
|
||||
traefik.http.routers.panel.entrypoints: webSecure
|
||||
traefik.http.routers.panel.tls.certresolver: letsencrypt
|
||||
traefik.http.services.panel.loadbalancer.server.port: "80"
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
- name: Deploy Romm
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: romm
|
||||
directories:
|
||||
- "{{ data_dir }}/romm"
|
||||
- "{{ data_dir }}/romm/igdb"
|
||||
- "{{ data_dir }}/romm/assets"
|
||||
- "{{ data_dir }}/romm/config"
|
||||
networks:
|
||||
- name: homelab
|
||||
image:
|
||||
name: rommapp/romm
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/romm/igdb:/romm/resources"
|
||||
- "{{ data_dir }}/romm/redis:/redis-data"
|
||||
- "{{ data_dir }}/romm/assets:/romm/assets"
|
||||
- "{{ data_dir }}/romm/config:/romm/config"
|
||||
- "{{ ROMM_LIBRARY_PATH }}:/romm/library"
|
||||
env:
|
||||
DB_HOST: mariadb
|
||||
DB_NAME: romm
|
||||
DB_USER: rommuser
|
||||
DB_PASSWD: romm
|
||||
ROMM_AUTH_SECRET_KEY: "{{ ROMM_AUTH_SECRET_KEY }}"
|
||||
IGDB_CLIENT_ID: "{{ ROMM_IGDB_CLIENT_ID }}"
|
||||
IGDB_CLIENT_SECRET: "{{ ROMM_IGDB_CLIENT_SECRET }}"
|
||||
OIDC_ENABLED: "{{ ROMM_OIDC_ENABLED }}"
|
||||
OIDC_PROVIDER: "{{ ROMM_OIDC_PROVIDER }}"
|
||||
OIDC_CLIENT_ID: "{{ ROMM_OIDC_CLIENT_ID }}"
|
||||
OIDC_CLIENT_SECRET: "{{ ROMM_OIDC_CLIENT_SECRET }}"
|
||||
OIDC_REDIRECT_URI: "{{ ROMM_OIDC_REDIRECT_URL }}"
|
||||
OIDC_CLAIM_ROLES: "{{ ROMM_OIDC_CLAIM_ROLES }}"
|
||||
OIDC_SERVER_APPLICATION_URL: "{{ ROMM_SERVER_APPLICATION_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.emu.rule: Host(`emu.fntz.net`)
|
||||
traefik.http.routers.emu.entrypoints: webSecure
|
||||
traefik.http.routers.emu.tls.certresolver: letsencrypt
|
||||
traefik.http.services.emu.loadbalancer.server.port: "8080"
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/wings"
|
||||
- "{{ data_dir }}/wings/lib"
|
||||
|
||||
- name: Pull latest Wings Docker image
|
||||
docker_image:
|
||||
name: ghcr.io/pterodactyl/wings
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Wings Network
|
||||
docker_network:
|
||||
name: wings
|
||||
driver: bridge
|
||||
ipam_config:
|
||||
- subnet: "172.55.0.0/16"
|
||||
|
||||
- name: Create Wings Docker Container
|
||||
docker_container:
|
||||
name: pterodactyl_wings
|
||||
image: ghcr.io/pterodactyl/wings:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: wings
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "/etc/pterodactyl:/etc/pterodactyl"
|
||||
- "{{ data_dir }}/wings/lib:{{ data_dir }}/wings/lib"
|
||||
- "{{ WINGS_CONTAINER_DIR }}:{{ WINGS_CONTAINER_DIR }}"
|
||||
- "/var/log/pterodactyl:/var/log/pterodactyl"
|
||||
- "/tmp/pterodactyl:/tmp/pterodactyl"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
WINGS_UID: "988"
|
||||
WINGS_GID: "988"
|
||||
WINGS_USERNAME: pterodactyl
|
||||
published_ports:
|
||||
- "2022:2022"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.wings.rule: Host(`{{ WINGS_URL }}`)
|
||||
traefik.http.routers.wings.entrypoints: webSecure
|
||||
traefik.http.routers.wings.tls.certresolver: letsencrypt
|
||||
traefik.http.services.wings.loadbalancer.server.port: "8080"
|
||||
@@ -1,14 +1,23 @@
|
||||
---
|
||||
- name: Deploy Gitea
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/gitea"
|
||||
|
||||
- name: Pull latest Gitea Docker Image
|
||||
docker_image:
|
||||
name: docker.gitea.com/gitea
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Gitea Docker Container
|
||||
docker_container:
|
||||
name: gitea
|
||||
directories:
|
||||
- "{{ data_dir }}/gitea"
|
||||
image:
|
||||
name: docker.gitea.com/gitea
|
||||
tag: latest
|
||||
image: docker.gitea.com/gitea:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
@@ -17,7 +26,6 @@
|
||||
published_ports:
|
||||
- "2222:22"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
USER_UID: "1000"
|
||||
USER_GID: "1000"
|
||||
labels:
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/glance"
|
||||
- "{{ data_dir }}/glance/config"
|
||||
- "{{ data_dir }}/glance/assets"
|
||||
|
||||
- name: Pull latest Glance Docker Image
|
||||
docker_image:
|
||||
name: glanceapp/glance
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Glance Docker Container
|
||||
docker_container:
|
||||
name: glance
|
||||
image: glanceapp/glance
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
PIHOLE_TOKEN: "{{ GLANCE_PIHOLE_TOKEN }}"
|
||||
VIDEO_MACHINE: "{{ GLANCE_VIDEO_MACHINE }}"
|
||||
JELLYFIN_URL: "{{ GLANCE_JELLYFIN_URL }}"
|
||||
JELLYFIN_TOKEN: "{{ GLANCE_JELLYFIN_TOKEN }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/glance/config:/app/config"
|
||||
- "{{ data_dir }}/glance/assets:/app/assets"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.glance.rule: Host(`fntz.net`)
|
||||
traefik.http.routers.glance.entrypoints: webSecure
|
||||
traefik.http.routers.glance.tls.certresolver: letsencrypt
|
||||
traefik.http.services.glance.loadbalancer.server.port: "8080"
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/gluetun"
|
||||
|
||||
- name: Pull latest Gluetun Docker Image
|
||||
docker_image:
|
||||
name: qmcgaw/gluetun
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy Gluetun Docker Container
|
||||
docker_container:
|
||||
name: gluetun
|
||||
image: qmcgaw/gluetun
|
||||
recreate: true
|
||||
capabilities:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
volumes:
|
||||
- "{{ data_dir }}/gluetun:/gluetun"
|
||||
networks:
|
||||
- name: homelab
|
||||
published_ports:
|
||||
- 8888:8888/tcp
|
||||
- 8388:8388/tcp
|
||||
- 8388:8388/udp
|
||||
env:
|
||||
VPN_SERVICE_PROVIDER: "{{ GLUETUN_VPN_SERVICE_PROVIDER }}"
|
||||
VPN_TYPE: "wireguard"
|
||||
WIREGUARD_PRIVATE_KEY: "{{ GLUETUN_WIREGUARD_PRIVATE_KEY }}"
|
||||
WIREGUARD_ADDRESSES: "{{ GLUETUN_WIREGUARD_ADDRESSES }}"
|
||||
SERVER_COUNTRIES: "{{ GLUETUN_SERVER_COUNTRIES }}"
|
||||
SERVER_CITIES: "{{ GLUETUN_SERVER_CITIES }}"
|
||||
SERVER_HOSTNAMES: "{{ GLUETUN_SERVER_HOSTNAMES }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
|
||||
traefik.http.routers.qbit.rule: Host(`qbit.fntz.net`)
|
||||
traefik.http.routers.qbit.service: qbit
|
||||
traefik.http.routers.qbit.entrypoints: webSecure
|
||||
traefik.http.routers.qbit.tls.certresolver: letsencrypt
|
||||
traefik.http.services.qbit.loadbalancer.server.port: "8090"
|
||||
|
||||
traefik.http.routers.jackett.rule: Host(`jackett.fntz.net`)
|
||||
traefik.http.routers.jackett.service: jackett
|
||||
traefik.http.routers.jackett.entrypoints: webSecure
|
||||
traefik.http.routers.jackett.tls.certresolver: letsencrypt
|
||||
traefik.http.services.jackett.loadbalancer.server.port: "9117"
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/helium"
|
||||
|
||||
- name: Clone latest services
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/helium-services.git
|
||||
dest: "{{ data_dir }}/helium"
|
||||
|
||||
- name: Build NGINX image
|
||||
docker_image:
|
||||
name: helium_nginx
|
||||
tag: "latest"
|
||||
build:
|
||||
args:
|
||||
SERVICES_HOSTNAME: "{{ HELIUM_BASE_URL }}"
|
||||
path: "{{ data_dir }}/helium/svc"
|
||||
dockerfile: "{{ data_dir }}/helium/svc/nginx/Dockerfile"
|
||||
source: build
|
||||
force_source: yes
|
||||
state: present
|
||||
|
||||
- name: Build Extension Proxy image
|
||||
docker_image:
|
||||
name: helium_ext_proxy
|
||||
tag: "latest"
|
||||
build:
|
||||
path: "{{ data_dir }}/helium/svc/extension-proxy"
|
||||
dockerfile: Dockerfile
|
||||
source: build
|
||||
force_source: yes
|
||||
state: present
|
||||
|
||||
- name: Build UBO image
|
||||
docker_image:
|
||||
name: helium_ubo
|
||||
tag: "latest"
|
||||
build:
|
||||
path: "{{ data_dir }}/helium/svc/ubo"
|
||||
dockerfile: Dockerfile
|
||||
source: build
|
||||
force_source: yes
|
||||
state: present
|
||||
|
||||
- name: Create Helium Network
|
||||
docker_network:
|
||||
name: helium
|
||||
|
||||
- name: Create NGINX Container
|
||||
docker_container:
|
||||
name: helium_nginx
|
||||
image: helium_nginx:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
shm_size: "512M"
|
||||
networks:
|
||||
- name: helium
|
||||
- name: homelab
|
||||
mounts:
|
||||
- type: tmpfs
|
||||
target: /tmp
|
||||
tmpfs_size: 5G
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.helium.rule: Host(`helium.fntz.net`)
|
||||
traefik.http.routers.helium.entrypoints: webSecure
|
||||
traefik.http.routers.helium.tls.certresolver: letsencrypt
|
||||
traefik.http.services.helium.loadbalancer.server.port: "80"
|
||||
|
||||
- name: Create UBO Proxy Container
|
||||
docker_container:
|
||||
name: helium_ubo
|
||||
image: helium_ubo:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: helium
|
||||
env:
|
||||
UBO_PROXY_BASE_URL: "https://{{ HELIUM_BASE_URL }}/ubo"
|
||||
|
||||
- name: Create Extension Proxy Container
|
||||
docker_container:
|
||||
name: helium_ext_proxy
|
||||
image: helium_ext_proxy:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: helium
|
||||
env:
|
||||
HMAC_SECRET: "{{ HELIUM_EXT_HMAC_SECRET }}"
|
||||
PROXY_BASE_URL: "https://{{ HELIUM_BASE_URL }}/ext"
|
||||
@@ -0,0 +1,31 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/homeassistant"
|
||||
|
||||
- name: Pull HA Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/home-assistant/home-assistant:stable
|
||||
source: pull
|
||||
|
||||
- name: Deploy Home Assistant Container
|
||||
docker_container:
|
||||
name: home_assistant
|
||||
image: ghcr.io/home-assistant/home-assistant:stable
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
network_mode: host
|
||||
privileged: true
|
||||
volumes:
|
||||
- "{{ data_dir }}/homeassistant:/config"
|
||||
- "/etc/localtime:/etc/localtime"
|
||||
- "/run/dbus:/run/dbus:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ha.rule: Host(`ha.fntz.net`)
|
||||
traefik.http.routers.ha.entrypoints: webSecure
|
||||
traefik.http.routers.ha.tls.certresolver: letsencrypt
|
||||
traefik.http.services.ha.loadbalancer.server.url: "http://{{ TRAEFIK_HOST_IP }}:8123"
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
- name: Create Folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/homebridge"
|
||||
|
||||
- name: Pull latest Homebridge Docker Image
|
||||
docker_image:
|
||||
name: homebridge/homebridge
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Homebridge Docker Container
|
||||
docker_container:
|
||||
name: homebridge
|
||||
image: homebridge/homebridge:latest
|
||||
restart_policy: unless-stopped
|
||||
network_mode: host
|
||||
recreate: true
|
||||
volumes:
|
||||
- "{{ data_dir }}/homebridge:/homebridge"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.bridge.rule: Host(`bridge.fntz.net`)
|
||||
traefik.http.routers.bridge.entrypoints: webSecure
|
||||
traefik.http.routers.bridge.tls.certresolver: letsencrypt
|
||||
traefik.http.services.bridge.loadbalancer.server.url: "http://{{ TRAEFIK_HOST_IP }}:8581"
|
||||
traefik.http.routers.bridge.middlewares: tinyauth
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/immich"
|
||||
- "{{ data_dir }}/immich/model-cache"
|
||||
- "{{ data_dir }}/immich/db"
|
||||
|
||||
- name: Create Immich Redis Docker Container
|
||||
docker_container:
|
||||
name: immich_redis
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:ff21bc0f8194dc9c105b769aeabf9585fea6a8ed649c0781caeac5cb3c247884
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: immich
|
||||
|
||||
- name: Create Immich DB Docker Container
|
||||
docker_container:
|
||||
name: immich_postgres
|
||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
volumes:
|
||||
- "{{ data_dir }}/immich/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
POSTGRES_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
|
||||
POSTGRES_USER: "{{ IMMICH_DB_USERNAME }}"
|
||||
POSTGRES_DB: "{{ IMMICH_DB_DATABASE_NAME }}"
|
||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||
networks:
|
||||
- name: immich
|
||||
|
||||
# - name: Create Immich ML Docker Container
|
||||
# docker_container:
|
||||
# name: immich_machine_learning
|
||||
# image: ghcr.io/immich-app/immich-machine-learning:release
|
||||
# restart_policy: unless-stopped
|
||||
# recreate: true
|
||||
# volumes:
|
||||
# - "{{ data_dir }}/immich/model-cache:/cache"
|
||||
# networks:
|
||||
# - name: immich
|
||||
|
||||
- name: Create Immich Server Docker Container
|
||||
docker_container:
|
||||
name: immich_server
|
||||
image: ghcr.io/immich-app/immich-server:release
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: immich
|
||||
volumes:
|
||||
- "{{ IMMICH_UPLOAD_LOCATION }}:/usr/src/app/upload"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
env:
|
||||
DB_HOSTNAME: "immich_postgres"
|
||||
REDIS_HOSTNAME: "immich_redis"
|
||||
DB_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
|
||||
DB_USERNAME: "{{ IMMICH_DB_USERNAME }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.img.rule: Host(`img.fntz.net`)
|
||||
traefik.http.routers.img.entrypoints: webSecure
|
||||
traefik.http.routers.img.tls.certresolver: letsencrypt
|
||||
traefik.http.services.img.loadbalancer.server.port: "2283"
|
||||
@@ -1,52 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/garage"
|
||||
- "{{ data_dir }}/garage/meta"
|
||||
- "{{ data_dir }}/garage/data"
|
||||
|
||||
- name: Create Garage Configuration
|
||||
template:
|
||||
src: templates/garage/garage.toml.j2
|
||||
dest: "{{ data_dir }}/garage/garage.toml"
|
||||
|
||||
- name: Deploy Garage S3
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: garage
|
||||
image:
|
||||
name: dxflrs/garage
|
||||
tag: v2.3.0
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/garage/garage.toml:/etc/garage.toml"
|
||||
- "{{ data_dir }}/garage/meta:/var/lib/garage/meta"
|
||||
- "{{ data_dir }}/garage/data:/var/lib/garage/data"
|
||||
env:
|
||||
GARAGE_DEFAULT_ACCESS_KEY: "{{ GARAGE_DEFAULT_ACCESS_KEY }}"
|
||||
GARAGE_DEFAULT_SECRET_KEY: "{{ GARAGE_DEFAULT_SECRET_KEY }}"
|
||||
GARAGE_DEFAULT_BUCKET: "{{ GARAGE_DEFAULT_BUCKET }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.s3.rule: Host(`s3.citadel.fntz.net`)
|
||||
traefik.http.routers.s3.entrypoints: webSecure
|
||||
traefik.http.routers.s3.tls.certresolver: letsencrypt
|
||||
traefik.http.routers.s3.service: s3
|
||||
traefik.http.services.s3.loadbalancer.server.port: "3900"
|
||||
|
||||
traefik.http.routers.s3-web.rule: Host(`s3-web.citadel.fntz.net`)
|
||||
traefik.http.routers.s3-web.entrypoints: webSecure
|
||||
traefik.http.routers.s3-web.tls.certresolver: letsencrypt
|
||||
traefik.http.routers.s3-web.service: s3-web
|
||||
traefik.http.services.s3-web.loadbalancer.server.port: "3902"
|
||||
|
||||
traefik.http.routers.s3-admin.rule: Host(`s3-admin.citadel.fntz.net`)
|
||||
traefik.http.routers.s3-admin.entrypoints: webSecure
|
||||
traefik.http.routers.s3-admin.tls.certresolver: letsencrypt
|
||||
traefik.http.routers.s3-admin.service: s3-admin
|
||||
traefik.http.services.s3-admin.loadbalancer.server.port: "3903"
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
- name: Deploy MariaDB Database
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: mariadb
|
||||
directories:
|
||||
- "{{ data_dir }}/db"
|
||||
- "{{ data_dir }}/db/import"
|
||||
image:
|
||||
name: mariadb
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/db:/var/lib/mysql"
|
||||
- "{{ data_dir }}/db/etc:/etc/mysql"
|
||||
- "{{ data_dir }}/db/import:/mnt/import"
|
||||
env:
|
||||
MARIADB_USER: "{{ MARIADB_DB_USER }}"
|
||||
MARIADB_ROOT_PASSWORD: "{{ MARIADB_DB_PASSWORD }}"
|
||||
|
||||
- name: Deploy PHPMyAdmin
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: phpmyadmin
|
||||
image:
|
||||
name: phpmyadmin
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
PMA_HOST: "{{ MARIADB_PMA_HOST }}"
|
||||
PMA_PORT: "{{ MARIADB_PMA_PORT }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pma.rule: Host(`{{ MARIADB_PMA_URL }}`)
|
||||
traefik.http.routers.pma.entrypoints: webSecure
|
||||
traefik.http.routers.pma.tls.certresolver: letsencrypt
|
||||
traefik.http.services.pma.loadbalancer.server.port: "80"
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
- name: Deploy Postgres
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: postgres
|
||||
image:
|
||||
name: postgres
|
||||
tag: 18-alpine
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
directories:
|
||||
- "{{ data_dir }}/postgres"
|
||||
- "{{ data_dir }}/postgres/data"
|
||||
- "{{ data_dir }}/postgres/import"
|
||||
volumes:
|
||||
- "{{ data_dir }}/postgres/data:/var/lib/postgresql/18/docker"
|
||||
- "{{ data_dir }}/postgres/import:/mnt/import"
|
||||
env:
|
||||
POSTGRES_USER: "{{ POSTGRES_USER }}"
|
||||
POSTGRES_PASSWORD: "{{ POSTGRES_PASSWORD }}"
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
- name: Deploy Redis
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: redis
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
image:
|
||||
name: redis
|
||||
tag: latest
|
||||
@@ -1,26 +0,0 @@
|
||||
---
|
||||
- name: Create Gitea Runner Configuration
|
||||
template:
|
||||
src: templates/runner/gitea-runner.yaml.j2
|
||||
dest: "{{ data_dir }}/gitea/config.yaml"
|
||||
|
||||
- name: Deploy Gitea Runner
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: gitea-runner
|
||||
directories:
|
||||
- "{{ data_dir }}/gitea"
|
||||
image:
|
||||
name: docker.io/gitea/act_runner
|
||||
tag: nightly
|
||||
network_mode: host
|
||||
volumes:
|
||||
- "{{ data_dir }}/gitea/config.yaml:/config.yaml"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
env:
|
||||
CONFIG_FILE: "/config.yaml"
|
||||
GITEA_INSTANCE_URL: "{{ GITEA_INSTANCE_URL }}"
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN: "{{ GITEA_RUNNER_REGISTRATION_TOKEN }}"
|
||||
GITEA_RUNNER_NAME: "runner"
|
||||
GITEA_RUNNER_LABELS: "runner:host"
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/jackett"
|
||||
|
||||
- name: Pull latest Jackett Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/jackett
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy Jackett Docker Container
|
||||
docker_container:
|
||||
name: jackett
|
||||
image: lscr.io/linuxserver/jackett
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
network_mode: "container:gluetun"
|
||||
volumes:
|
||||
- "{{ data_dir }}/jackett:/config"
|
||||
- "{{ media_path}}/Downloads:/downloads"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/jellyfin"
|
||||
|
||||
- name: Pull latest Jellyfin Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/jellyfin
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Jellyfin Docker Container
|
||||
docker_container:
|
||||
name: jellyfin
|
||||
image: lscr.io/linuxserver/jellyfin:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
published_ports:
|
||||
- 8096:8096
|
||||
volumes:
|
||||
- "{{ data_dir }}/jellyfin:/config"
|
||||
- "{{ JELLYFIN_TV_PATH }}:/data/tvshows"
|
||||
- "{{ JELLYFIN_MOVIE_PATH }}:/data/movies"
|
||||
- "{{ JELLYFIN_MUSIC_PATH }}:/data/music"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.jf.rule: Host(`jf.fntz.net`)
|
||||
traefik.http.routers.jf.entrypoints: webSecure
|
||||
traefik.http.routers.jf.tls.certresolver: letsencrypt
|
||||
traefik.http.services.jf.loadbalancer.server.port: "8096"
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/kavita"
|
||||
|
||||
- name: Pull latest Kavita Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/kavita
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy Kavita Docker Container
|
||||
docker_container:
|
||||
name: kavita
|
||||
image: lscr.io/linuxserver/kavita
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
volumes:
|
||||
- "{{ data_dir }}/kavita:/config"
|
||||
- "{{ media_path }}/Books:/books"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.read.rule: Host(`read.fntz.net`)
|
||||
traefik.http.routers.read.entrypoints: webSecure
|
||||
traefik.http.routers.read.tls.certresolver: letsencrypt
|
||||
traefik.http.services.read.loadbalancer.server.port: "5000"
|
||||
@@ -1,40 +0,0 @@
|
||||
---
|
||||
- name: Deploy AudioBookshelf
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: audiobookshelf_abs
|
||||
network_name: "abs"
|
||||
directories:
|
||||
- "{{ data_dir }}/audiobookshelf"
|
||||
- "{{ data_dir }}/audiobookshelf/config"
|
||||
- "{{ data_dir }}/audiobookshelf/metadata"
|
||||
image:
|
||||
name: ghcr.io/advplyr/audiobookshelf
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: abs
|
||||
volumes:
|
||||
- "{{ media_path }}/Books/Audiobooks:/audiobooks"
|
||||
- "{{ data_dir }}/audiobookshelf/config:/config"
|
||||
- "{{ data_dir }}/audiobookshelf/metadata:/metadata"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.audiobookshelf.rule: Host(`abooks.fntz.net`)
|
||||
traefik.http.routers.audiobookshelf.entrypoints: webSecure
|
||||
traefik.http.routers.audiobookshelf.tls.certresolver: letsencrypt
|
||||
traefik.http.services.audiobookshelf.loadbalancer.server.port: "80"
|
||||
|
||||
- name: Deploy abs-tract
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: audiobookshelf_abs-tract
|
||||
image:
|
||||
name: arranhs/abs-tract
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "abs"
|
||||
@@ -1,26 +0,0 @@
|
||||
---
|
||||
- name: Deploy Ersatz
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: ersatztv
|
||||
directories:
|
||||
- "{{ data_dir }}/ersatz"
|
||||
image:
|
||||
name: ghcr.io/ersatztv/ersatztv
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
published_ports:
|
||||
- "8409:8409"
|
||||
volumes:
|
||||
- "{{ data_dir }}/ersatz:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.iptv.rule: Host(`iptv.fntz.net`)
|
||||
traefik.http.routers.iptv.entrypoints: webSecure
|
||||
traefik.http.routers.iptv.tls.certresolver: letsencrypt
|
||||
traefik.http.services.iptv.loadbalancer.server.port: "8409"
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
- name: Deploy Frigate
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: frigate
|
||||
directories:
|
||||
- "{{ data_dir }}/frigate"
|
||||
image:
|
||||
name: ghcr.io/blakeblackshear/frigate
|
||||
tag: stable
|
||||
privileged: true
|
||||
devices:
|
||||
- /dev/dri
|
||||
- /dev/kfd
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- "{{ data_dir }}/frigate:/config"
|
||||
- "{{ media_path }}/Cameras:/media/frigate"
|
||||
env:
|
||||
LIBVA_DRIVER_NAME: radeonsi
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.frigate.rule: Host(`nvr.fntz.net`)
|
||||
traefik.http.routers.frigate.entrypoints: webSecure
|
||||
traefik.http.routers.frigate.tls.certresolver: letsencrypt
|
||||
traefik.http.services.frigate.loadbalancer.server.port: "5000"
|
||||
@@ -1,61 +0,0 @@
|
||||
---
|
||||
- name: Deploy Immich DB
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich_postgres
|
||||
directories:
|
||||
- "{{ data_dir }}/immich"
|
||||
- "{{ data_dir }}/immich/model-cache"
|
||||
- "{{ data_dir }}/immich/db"
|
||||
image:
|
||||
name: ghcr.io/immich-app/postgres
|
||||
tag: 14-vectorchord0.4.3-pgvectors0.2.0
|
||||
volumes:
|
||||
- "{{ data_dir }}/immich/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
POSTGRES_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
|
||||
POSTGRES_USER: "{{ IMMICH_DB_USERNAME }}"
|
||||
POSTGRES_DB: "{{ IMMICH_DB_DATABASE_NAME }}"
|
||||
POSTGRES_INITDB_ARGS: "--data-checksums"
|
||||
networks:
|
||||
- name: immich
|
||||
network_name: immich
|
||||
- name: Deploy Immich Redis
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich_redis
|
||||
image:
|
||||
name: docker.io/valkey/valkey
|
||||
tag: 8-bookworm
|
||||
networks:
|
||||
- name: immich
|
||||
- name: Deploy Immich Server
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich
|
||||
image:
|
||||
name: ghcr.io/immich-app/immich-server
|
||||
tag: v2.7.5
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: immich
|
||||
volumes:
|
||||
- "{{ IMMICH_UPLOAD_LOCATION }}:/usr/src/app/upload"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
DB_HOSTNAME: "immich_postgres"
|
||||
REDIS_HOSTNAME: "immich_redis"
|
||||
DB_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
|
||||
DB_USERNAME: "{{ IMMICH_DB_USERNAME }}"
|
||||
DB_DATABASE_NAME: "{{ IMMICH_DB_DATABASE_NAME }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.img.rule: Host(`img.fntz.net`)
|
||||
traefik.http.routers.img.entrypoints: webSecure
|
||||
traefik.http.routers.img.tls.certresolver: letsencrypt
|
||||
traefik.http.services.img.loadbalancer.server.port: "2283"
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
- name: Deploy Plex
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: plex
|
||||
image:
|
||||
name: lscr.io/linuxserver/plex
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
VERSION: "docker"
|
||||
PLEX_CLAIM: "{{ PLEX_CLAIM_TOKEN }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/plex:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.plex.rule: Host(`tv.fntz.net`)
|
||||
traefik.http.routers.plex.entrypoints: webSecure
|
||||
traefik.http.routers.plex.tls.certresolver: letsencrypt
|
||||
traefik.http.services.plex.loadbalancer.server.port: "32400"
|
||||
@@ -1,61 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/scrobbling"
|
||||
- "{{ data_dir }}/scrobbling/koito"
|
||||
- "{{ data_dir }}/scrobbling/multi-scrobbler"
|
||||
|
||||
- name: Create Scrobbler Configuration
|
||||
template:
|
||||
src: templates/scrobbling/lastfm.json.j2
|
||||
dest: "{{ data_dir }}/scrobbling/multi-scrobbler/lastfm.json"
|
||||
|
||||
- name: Deploy Kotio
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: scrobbling_koito
|
||||
network_name: scrobbling
|
||||
networks:
|
||||
- name: scrobbling
|
||||
- name: homelab
|
||||
image:
|
||||
name: gabehf/koito
|
||||
tag: latest
|
||||
env:
|
||||
KOITO_ALLOWED_HOSTS: koito.fntz.net
|
||||
volumes:
|
||||
- "{{ data_dir }}/scrobbling/koito:/etc/koito"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.kotio.rule: Host(`koito.fntz.net`)
|
||||
traefik.http.routers.kotio.entrypoints: webSecure
|
||||
traefik.http.routers.kotio.tls.certresolver: letsencrypt
|
||||
traefik.http.services.kotio.loadbalancer.server.port: "4110"
|
||||
|
||||
- name: Deploy Multi-Scrobbler
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: scrobbling_multi-scrobbler
|
||||
image:
|
||||
name: ghcr.io/foxxmd/multi-scrobbler
|
||||
tag: latest
|
||||
networks:
|
||||
- name: scrobbling
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/scrobbling/multi-scrobbler:/config"
|
||||
env:
|
||||
KOITO_TOKEN: "{{ SCROBBLER_KOITO_TOKEN }}"
|
||||
KOITO_USER: "{{ SCROBBLER_KOITO_USER }}"
|
||||
KOITO_URL: "{{ SCROBBLER_KOITO_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.scrobbler.rule: Host(`scrobbler.fntz.net`)
|
||||
traefik.http.routers.scrobbler.entrypoints: webSecure
|
||||
traefik.http.routers.scrobbler.tls.certresolver: letsencrypt
|
||||
traefik.http.services.scrobbler.loadbalancer.server.port: "9078"
|
||||
@@ -1,56 +0,0 @@
|
||||
# need to redeploy
|
||||
---
|
||||
- name: Deploy Radarr
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: servarr_radarr
|
||||
directories:
|
||||
- "{{ data_dir }}/servarr"
|
||||
- "{{ data_dir }}/servarr/sonarr_config"
|
||||
- "{{ data_dir }}/servarr/radarr_config"
|
||||
- "{{ data_dir }}/servarr/lidarr_config"
|
||||
image:
|
||||
name: lscr.io/linuxserver/radarr
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/radarr_config:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.radarr.rule: Host(`radarr.fntz.net`)
|
||||
traefik.http.routers.radarr.entrypoints: webSecure
|
||||
traefik.http.routers.radarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
||||
|
||||
- name: Deploy Sonarr
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: servarr_sonarr
|
||||
image:
|
||||
name: lscr.io/linuxserver/sonarr
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/sonarr_config:/config"
|
||||
- "{{ media_path }}:/data"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.sonarr.rule: Host(`sonarr.fntz.net`)
|
||||
traefik.http.routers.sonarr.entrypoints: webSecure
|
||||
traefik.http.routers.sonarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
- name: Deploy Weatherstar
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: weatherstar
|
||||
image:
|
||||
name: ghcr.io/netbymatt/ws4kp
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
WSQS_latLonQuery: "Batavia, New York, USA"
|
||||
WSQS_hazards_checkbox: "true"
|
||||
WSQS_current_weather_checkbox: "true"
|
||||
WSQS_settings_mediaVolume_select: "0.75"
|
||||
WSQS_settings_scanLineMode_select: "thin"
|
||||
WSQS_settings_mediaPlaying_boolean: "true"
|
||||
WSQS_settings_wide_checkbox: "true"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.weatherstar.rule: Host(`weatherstar.fntz.net`)
|
||||
traefik.http.routers.weatherstar.entrypoints: webSecure
|
||||
traefik.http.routers.weatherstar.tls.certresolver: letsencrypt
|
||||
traefik.http.services.weatherstar.loadbalancer.server.port: "8080"
|
||||
|
||||
- name: Deploy WS4Channels
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: weatherstar_ws4channels
|
||||
image:
|
||||
name: ghcr.io/rice9797/ws4channels
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
WS4KP_HOST: "weatherstar"
|
||||
WS4KP_PORT: "8080"
|
||||
ZIP_CODE: "14020"
|
||||
published_ports:
|
||||
- "9798:9798"
|
||||
@@ -0,0 +1,31 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/navidrome"
|
||||
|
||||
- name: Pull latest Navidrome Docker Image
|
||||
docker_image:
|
||||
name: deluan/navidrome
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Navidrome Docker Container
|
||||
docker_container:
|
||||
name: navidrome
|
||||
image: deluan/navidrome:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/navidrome:/data"
|
||||
- "{{ NAVIDROME_MUSIC_PATH }}:/music:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.music.rule: Host(`music.fntz.net`)
|
||||
traefik.http.routers.music.entrypoints: webSecure
|
||||
traefik.http.routers.music.tls.certresolver: letsencrypt
|
||||
traefik.http.services.music.loadbalancer.server.port: "4533"
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/nextcloud"
|
||||
- "{{ data_dir }}/nextcloud/data"
|
||||
- "{{ data_dir }}/nextcloud/db"
|
||||
|
||||
- name: Create Nextcloud Docker Network
|
||||
docker_network:
|
||||
name: nextcloud
|
||||
|
||||
- name: Pull latest Nextcloud Docker Image
|
||||
docker_image:
|
||||
name: nextcloud
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Nextcloud DB Docker Container
|
||||
docker_container:
|
||||
name: nc_postgresql
|
||||
image: postgres:17-alpine
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: nextcloud
|
||||
volumes:
|
||||
- "{{ data_dir }}/nextcloud/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
POSTGRES_PASSWORD: "{{ NEXTCLOUD_POSTGRES_PASSWORD }}"
|
||||
POSTGRES_DATABASE: "{{ NEXTCLOUD_POSTGRES_DATABASE }}"
|
||||
POSTGRES_USER: "{{ NEXTCLOUD_POSTGRES_USER }}"
|
||||
POSTGRES_HOST: "{{ NEXTCLOUD_POSTGRES_HOST }}"
|
||||
|
||||
- name: Create Nextcloud Docker Container
|
||||
docker_container:
|
||||
name: nextcloud
|
||||
image: nextcloud
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
- name: nextcloud
|
||||
volumes:
|
||||
- "{{ data_dir }}/nextcloud/data:/var/www/html"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nc.rule: Host(`{{ NEXTCLOUD_APP_URL }}`)
|
||||
traefik.http.routers.nc.entrypoints: webSecure
|
||||
traefik.http.routers.nc.tls.certresolver: letsencrypt
|
||||
traefik.http.services.nc.loadbalancer.server.port: "80"
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/nfl-proxy"
|
||||
|
||||
- name: "Clone latest NFL-Proxy"
|
||||
git:
|
||||
repo: "git@git.alexav.gg:alex/nfl-proxy.git"
|
||||
dest: "{{ data_dir }}/nfl-proxy"
|
||||
|
||||
- name: "Stop & remove existing PM2 containers"
|
||||
ignore_errors: yes
|
||||
shell: |
|
||||
/home/alex/.nvm/versions/node/v24.4.0/bin/pm2 delete "nfl-proxy"
|
||||
|
||||
- name: "Start new PM2 container"
|
||||
args:
|
||||
chdir: "{{ data_dir }}/nfl-proxy"
|
||||
shell: |
|
||||
/home/alex/.nvm/versions/node/v24.4.0/bin/pm2 start --name="nfl-proxy" "venv/bin/activate && venv/bin/python main.py"
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/ntfy"
|
||||
- "{{ data_dir }}/ntfy/cache"
|
||||
- "{{ data_dir }}/ntfy/data"
|
||||
|
||||
- name: Pull latest Ntfy Docker Image
|
||||
docker_image:
|
||||
name: binwiederhier/ntfy
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Ntfy Docker Container
|
||||
docker_container:
|
||||
name: ntfy
|
||||
image: binwiederhier/ntfy
|
||||
command: serve
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/ntfy/cache:/var/cache/ntfy"
|
||||
- "{{ data_dir }}/ntfy/data:/etc/ntfy"
|
||||
env:
|
||||
UPSTREAM_BASE_URL: "{{ NTFY_UPSTREAM_BASE_URL }}"
|
||||
BASE_URL: "{{ NTFY_BASE_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ntfy.rule: Host(`push.fntz.net`)
|
||||
traefik.http.routers.ntfy.entrypoints: webSecure
|
||||
traefik.http.routers.ntfy.tls.certresolver: letsencrypt
|
||||
@@ -1,25 +1,34 @@
|
||||
---
|
||||
- name: Deploy NZBGet
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/nzbget"
|
||||
|
||||
- name: Pull latest NZBGet Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/nzbget
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create NZBGet Docker Container
|
||||
docker_container:
|
||||
name: nzbget
|
||||
directories:
|
||||
- "{{ data_dir }}/nzbget"
|
||||
image:
|
||||
name: lscr.io/linuxserver/nzbget
|
||||
tag: latest
|
||||
image: lscr.io/linuxserver/nzbget:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/nzbget:/config"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
|
||||
env:
|
||||
NZBGET_USER: "{{ NZBGET_USER }}"
|
||||
NZBGET_PASS: "{{ NZBGET_PASS }}"
|
||||
TZ: "{{ TZ }}"
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nzb.rule: Host(`nzb.fntz.net`)
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/obsidian"
|
||||
- "{{ data_dir }}/obsidian/data"
|
||||
- "{{ data_dir }}/obsidian/etc"
|
||||
|
||||
- name: Pull Docker Image
|
||||
docker_image:
|
||||
name: couchdb
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Docker Container
|
||||
docker_container:
|
||||
name: couchdb
|
||||
image: couchdb:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/obsidian/data:/opt/couchdb/data"
|
||||
- "{{ data_dir }}/obsidian/etc:/opt/couchdb/etc/local.d"
|
||||
env:
|
||||
COUCHDB_USER: "{{ COUCHDB_USER }}"
|
||||
COUCHDB_PASSWORD: "{{ COUCHDB_PASSWORD }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.couch.rule: Host(`couch.fntz.net`)
|
||||
traefik.http.routers.couch.entrypoints: webSecure
|
||||
traefik.http.routers.couch.tls.certresolver: letsencrypt
|
||||
traefik.http.services.couch.loadbalancer.server.port: "5984"
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/owncloud"
|
||||
- "{{ data_dir }}/owncloud/data"
|
||||
- "{{ data_dir }}/owncloud/db"
|
||||
- "{{ data_dir }}/owncloud/redis"
|
||||
|
||||
- name: Create Owncloud Docker Network
|
||||
docker_network:
|
||||
name: owncloud
|
||||
|
||||
- name: Pull latest Owncloud Docker Image
|
||||
docker_image:
|
||||
name: owncloud/server
|
||||
tag: "10.15"
|
||||
source: pull
|
||||
|
||||
- name: Create Owncloud DB Docker Container
|
||||
docker_container:
|
||||
name: oc_database
|
||||
image: mariadb:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: owncloud
|
||||
volumes:
|
||||
- "{{ data_dir }}/owncloud/db:/var/lib/mysql"
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: "{{ OWNCLOUD_DB_PASSWORD }}"
|
||||
MYSQL_DATABASE: "owncloud"
|
||||
MYSQL_USER: "owncloud"
|
||||
MYSQL_PASSWORD: "{{ OWNCLOUD_DB_PASSWORD }}"
|
||||
MARIADB_AUTO_UPGRADE: "1"
|
||||
command: "--max-allowed-packet=128M --innodb-log-file-size=64M"
|
||||
healthcheck:
|
||||
test: "CMD mysqladmin ping -u root --password={{ OWNCLOUD_DB_PASSWORD }}"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
- name: Create Owncloud Redis Container
|
||||
docker_container:
|
||||
name: oc_redis
|
||||
image: redis:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: owncloud
|
||||
command: "--databases 1"
|
||||
healthcheck:
|
||||
test: CMD redis-cli ping
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
volumes:
|
||||
- "{{ data_dir }}/owncloud/redis:/data"
|
||||
|
||||
- name: Create Owncloud Docker Container
|
||||
docker_container:
|
||||
name: owncloud
|
||||
image: owncloud/server:10.15
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
- name: owncloud
|
||||
volumes:
|
||||
- "{{ data_dir }}/owncloud/data:/mnt/data"
|
||||
env:
|
||||
OWNCLOUD_DOMAIN: "{{ OWNCLOUD_APP_URL }}"
|
||||
OWNCLOUD_TRUSTED_DOMAINS: "{{ OWNCLOUD_APP_URL }}"
|
||||
OWNCLOUD_DB_TYPE: "mysql"
|
||||
OWNCLOUD_DB_NAME: "owncloud"
|
||||
OWNCLOUD_DB_USERNAME: "owncloud"
|
||||
OWNCLOUD_DB_PASSWORD: "{{ OWNCLOUD_DB_PASSWORD }}"
|
||||
OWNCLOUD_DB_HOST: "oc_database"
|
||||
OWNCLOUD_ADMIN_USERNAME: "{{ OWNCLOUD_ADMIN_USERNAME }}"
|
||||
OWNCLOUD_ADMIN_PASSWORD: "{{ OWNCLOUD_ADMIN_PASSWORD }}"
|
||||
OWNCLOUD_MYSQL_UTF8MB4: "true"
|
||||
OWNCLOUD_REDIS_ENBALED: "true"
|
||||
OWNCLOUD_REDIS_HOST: "oc_redis"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nc.rule: Host(`{{ OWNCLOUD_APP_URL }}`)
|
||||
traefik.http.routers.nc.entrypoints: webSecure
|
||||
traefik.http.routers.nc.tls.certresolver: letsencrypt
|
||||
traefik.http.services.nc.loadbalancer.server.port: "8080"
|
||||
traefik.http.middlewares.limit.buffering.maxRequestBodyBytes: "1073741824"
|
||||
traefik.http.routers.nc.middlewares: "limit"
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pihole"
|
||||
|
||||
- name: Pull latest PiHole Docker Image
|
||||
docker_image:
|
||||
name: pihole/pihole
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create PiHole Docker Container
|
||||
docker_container:
|
||||
name: pihole
|
||||
image: pihole/pihole:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
published_ports:
|
||||
- "{{ TRAEFIK_HOST_IP }}:53:53/tcp"
|
||||
- "{{ TRAEFIK_HOST_IP }}:53:53/udp"
|
||||
volumes:
|
||||
- "{{ data_dir }}/pihole:/etc/pihole"
|
||||
env:
|
||||
FTLCONF_webserver_api_password: "{{ PIHOLE_FTLCONF_WEBSERVER_API_PASSWORD }}"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pihole.rule: Host(`pihole.fntz.net`)
|
||||
traefik.http.routers.pihole.entrypoints: webSecure
|
||||
traefik.http.routers.pihole.tls.certresolver: letsencrypt
|
||||
traefik.http.services.pihole.loadbalancer.server.port: "80"
|
||||
@@ -3,6 +3,7 @@
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: 999
|
||||
with_items:
|
||||
- "{{ data_dir }}/plausible"
|
||||
- "{{ data_dir }}/plausible/app"
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/plex"
|
||||
|
||||
- name: Pull latest Plex Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/plex
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy Plex Docker Container
|
||||
docker_container:
|
||||
name: plex
|
||||
image: lscr.io/linuxserver/plex
|
||||
network_mode: host
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
VERSION: "docker"
|
||||
PLEX_CLAIM: "{{ PLEX_CLAIM_TOKEN }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/plex:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
@@ -1,20 +1,28 @@
|
||||
---
|
||||
- name: Deploy PocketID
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Create Folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pocketid"
|
||||
|
||||
- name: Pull latest PocketID Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/pocket-id/pocket-id
|
||||
tag: v1
|
||||
source: pull
|
||||
|
||||
- name: Create PocketID Docker Container
|
||||
docker_container:
|
||||
name: pocketid
|
||||
directories:
|
||||
- "{{ data_dir }}/pocketid"
|
||||
image:
|
||||
name: ghcr.io/pocket-id/pocket-id
|
||||
tag: v2
|
||||
image: ghcr.io/pocket-id/pocket-id:v1
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/pocketid:/app/data"
|
||||
env:
|
||||
ENCRYPTION_KEY: "{{ POCKETID_ENCRYPTION_KEY }}"
|
||||
APP_URL: "{{ POCKETID_APP_URL }}"
|
||||
TRUST_PROXY: "{{ POCKETID_TRUST_PROXY }}"
|
||||
PUID: "{{ PUID }}"
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/qbittorrent"
|
||||
|
||||
- name: Pull latest QBittorrent Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/qbittorrent
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy QBittorrent Docker Container
|
||||
docker_container:
|
||||
name: qbittorrent
|
||||
image: lscr.io/linuxserver/qbittorrent
|
||||
network_mode: "container:gluetun"
|
||||
recreate: true
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
WEBUI_PORT: "8090"
|
||||
TORRENTING_PORT: "6861"
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/romm"
|
||||
- "{{ data_dir }}/romm/igdb"
|
||||
- "{{ data_dir }}/romm/assets"
|
||||
- "{{ data_dir }}/romm/config"
|
||||
- "{{ data_dir }}/romm/db"
|
||||
|
||||
- name: Pull latest Romm Docker Image
|
||||
docker_image:
|
||||
name: rommapp/romm
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Romm DB Docker Container
|
||||
docker_container:
|
||||
name: romm-db
|
||||
image: mariadb:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: romm
|
||||
volumes:
|
||||
- "{{ data_dir }}/romm/db:/var/lib/mysql"
|
||||
env:
|
||||
MARIADB_ROOT_PASSWORD: romm
|
||||
MARIADB_DATABASE: romm
|
||||
MARIADB_USER: romm-user
|
||||
MARIADB_PASSWORD: romm
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
start_period: 30s
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
- name: Create Romm Docker Container
|
||||
docker_container:
|
||||
name: romm
|
||||
image: rommapp/romm:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: romm
|
||||
volumes:
|
||||
- "{{ data_dir }}/romm/igdb:/romm/resources"
|
||||
- "{{ data_dir }}/romm/redis:/redis-data"
|
||||
- "{{ data_dir }}/romm/assets:/romm/assets"
|
||||
- "{{ data_dir }}/romm/config:/romm/config"
|
||||
- "{{ ROMM_LIBRARY_PATH }}:/romm/library"
|
||||
env:
|
||||
DB_HOST: romm-db
|
||||
DB_NAME: romm
|
||||
DB_USER: romm-user
|
||||
DB_PASSWD: romm
|
||||
AUTH_SECRET_KEY: "{{ ROMM_AUTH_SECRET_KEY }}"
|
||||
IGDB_CLIENT_ID: "{{ ROMM_IGDB_CLIENT_ID }}"
|
||||
IGDB_CLIENT_SECRET: "{{ ROMM_IGDB_CLIENT_SECRET }}"
|
||||
OIDC_ENABLED: "{{ ROMM_OIDC_ENABLED }}"
|
||||
OIDC_PROVIDER: "{{ ROMM_OIDC_PROVIDER }}"
|
||||
OIDC_CLIENT_ID: "{{ ROMM_OIDC_CLIENT_ID }}"
|
||||
OIDC_CLIENT_SECRET: "{{ ROMM_OIDC_CLIENT_SECRET }}"
|
||||
OIDC_REDIRECT_URL: "{{ ROMM_OIDC_REDIRECT_URL }}"
|
||||
SERVER_APPLICATION_URL: "{{ ROMM_SERVER_APPLICATION_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.emu.rule: Host(`emu.fntz.net`)
|
||||
traefik.http.routers.emu.entrypoints: webSecure
|
||||
traefik.http.routers.emu.tls.certresolver: letsencrypt
|
||||
traefik.http.services.emu.loadbalancer.server.port: "8080"
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/servarr"
|
||||
- "{{ data_dir }}/servarr/sonarr_config"
|
||||
- "{{ data_dir }}/servarr/radarr_config"
|
||||
- "{{ data_dir }}/servarr/lidarr_config"
|
||||
|
||||
- name: Pull latest Radarr Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/radarr
|
||||
tag: latest
|
||||
source: pull
|
||||
- name: Pull latest Sonarr Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/sonarr
|
||||
tag: latest
|
||||
source: pull
|
||||
- name: Pull latest Lidarr Docker Image
|
||||
docker_image:
|
||||
name: lscr.io/linuxserver/lidarr
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Deploy Radarr Container
|
||||
docker_container:
|
||||
name: radarr
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/radarr_config:/config"
|
||||
- "{{ SERVARR_MEDIA_PATH }}:/media"
|
||||
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.radarr.rule: Host(`radarr.fntz.net`)
|
||||
traefik.http.routers.radarr.entrypoints: webSecure
|
||||
traefik.http.routers.radarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
||||
|
||||
- name: Deploy Sonarr Container
|
||||
docker_container:
|
||||
name: sonarr
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/sonarr_config:/config"
|
||||
- "{{ SERVARR_MEDIA_PATH }}:/data"
|
||||
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.sonarr.rule: Host(`sonarr.fntz.net`)
|
||||
traefik.http.routers.sonarr.entrypoints: webSecure
|
||||
traefik.http.routers.sonarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
||||
|
||||
- name: Deploy Lidarr Container
|
||||
docker_container:
|
||||
name: lidarr
|
||||
image: lscr.io/linuxserver/lidarr:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/lidarr_config:/config"
|
||||
- "{{ SERVARR_MEDIA_PATH }}:/media"
|
||||
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.lidarr.rule: Host(`lidarr.fntz.net`)
|
||||
traefik.http.routers.lidarr.entrypoints: webSecure
|
||||
traefik.http.routers.lidarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.lidarr.loadbalancer.server.port: "8686"
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
- name: "Create file structure"
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/storage-api"
|
||||
- "{{ data_dir }}/storage-api/app"
|
||||
- "{{ data_dir }}/storage-api/files"
|
||||
|
||||
- name: "Clone latest Storage API"
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/storage-api.git
|
||||
dest: "{{ data_dir }}/storage-api/app"
|
||||
|
||||
- name: "Build Storage API Docker Image"
|
||||
docker_image:
|
||||
name: storage-api
|
||||
tag: "latest"
|
||||
build:
|
||||
path: "{{ data_dir }}/storage-api/app"
|
||||
dockerfile: Dockerfile
|
||||
source: build
|
||||
state: present
|
||||
|
||||
- name: Deploy Storage API Container
|
||||
docker_container:
|
||||
name: storage_api
|
||||
image: storage-api:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/storage-api/files:/app/files"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
TOKEN: "{{ API_ADMIN_KEY }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.storage.rule: Host(`storage.alexav.gg`)
|
||||
traefik.http.routers.storage.entrypoints: webSecure
|
||||
traefik.http.routers.storage.tls.certresolver: letsencrypt
|
||||
traefik.http.services.storage.loadbalancer.server.port: "3001"
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/tautulli"
|
||||
|
||||
- name: Pull latest Tautulli Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/tautulli/tautulli
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Tautulli Docker Container
|
||||
docker_container:
|
||||
name: tautulli
|
||||
image: ghcr.io/tautulli/tautulli
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/tautulli:/config"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.tt.rule: Host(`tt.fntz.net`)
|
||||
traefik.http.routers.tt.entrypoints: webSecure
|
||||
traefik.http.routers.tt.tls.certresolver: letsencrypt
|
||||
traefik.http.services.tt.loadbalancer.server.port: "8181"
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
- name: Pull latest Tinyauth Docker Image
|
||||
docker_image:
|
||||
name: ghcr.io/steveiliop56/tinyauth
|
||||
tag: v3
|
||||
source: pull
|
||||
|
||||
- name: Create Tinyauth Docker Container
|
||||
docker_container:
|
||||
name: tinyauth
|
||||
image: ghcr.io/steveiliop56/tinyauth:v3
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
USERS: "{{ TINYAUTH_USERS }}"
|
||||
SECRET: "{{ TINYAUTH_SECRET }}"
|
||||
APP_URL: "{{ TINYAUTH_APP_URL }}"
|
||||
GENERIC_CLIENT_ID: "{{ TINYAUTH_GENERIC_CLIENT_ID }}"
|
||||
GENERIC_CLIENT_SECRET: "{{ TINYAUTH_GENERIC_CLIENT_SECRET }}"
|
||||
GENERIC_AUTH_URL: "{{ TINYAUTH_GENERIC_AUTH_URL }}"
|
||||
GENERIC_TOKEN_URL: "{{ TINYAUTH_GENERIC_TOKEN_URL }}"
|
||||
GENERIC_USER_URL: "{{ TINYAUTH_GENERIC_USER_URL }}"
|
||||
GENERIC_SCOPES: "{{ TINYAUTH_GENERIC_SCOPES }}"
|
||||
GENERIC_NAME: "{{ TINYAUTH_GENERIC_NAME }}"
|
||||
OAUTH_WHITELIST: "{{ TINYAUTH_OAUTH_WHITELIST }}"
|
||||
APP_TITLE: "{{ TINYAUTH_APP_TITLE }}"
|
||||
BACKGROUND_IMAGE: "{{ TINYAUTH_BACKGROUND_IMAGE }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.tinyauth.rule: Host(`auth.fntz.net`)
|
||||
traefik.http.routers.tinyauth.entrypoints: webSecure
|
||||
traefik.http.routers.tinyauth.tls.certresolver: letsencrypt
|
||||
traefik.http.middlewares.tinyauth.forwardauth.address: http://tinyauth:3000/api/auth/traefik
|
||||
@@ -1,14 +1,23 @@
|
||||
---
|
||||
- name: Deploy Uptime Kuma
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/uptime-kuma"
|
||||
|
||||
- name: Pull latest Uptime Kuma Docker Image
|
||||
docker_image:
|
||||
name: louislam/uptime-kuma
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Uptime Kuma Docker Container
|
||||
docker_container:
|
||||
name: uptime-kuma
|
||||
directories:
|
||||
- "{{ data_dir }}/uptime-kuma"
|
||||
image:
|
||||
name: louislam/uptime-kuma
|
||||
tag: latest
|
||||
image: louislam/uptime-kuma
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
- name: Deploy AdGuard Home
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: adguard
|
||||
directories:
|
||||
- "{{ data_dir }}/adguard"
|
||||
- "{{ data_dir }}/adguard/work"
|
||||
- "{{ data_dir }}/adguard/conf"
|
||||
image:
|
||||
name: adguard/adguardhome
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/adguard/work:/opt/adguardhome/work"
|
||||
- "{{ data_dir }}/adguard/conf:/opt/adguardhome/conf"
|
||||
published_ports:
|
||||
- "53:53/tcp"
|
||||
- "53:53/udp"
|
||||
networks:
|
||||
- name: "homelab"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.adguard.rule: Host(`ag.fntz.net`)
|
||||
traefik.http.routers.adguard.entrypoints: webSecure
|
||||
traefik.http.routers.adguard.tls.certresolver: letsencrypt
|
||||
traefik.http.services.adguard.loadbalancer.server.port: "3000"
|
||||
@@ -1,71 +0,0 @@
|
||||
---
|
||||
- name: Deploy API Database
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: api_postgres
|
||||
network_name: api
|
||||
directories:
|
||||
- "{{ data_dir }}/api/db"
|
||||
image:
|
||||
name: postgres
|
||||
tag: "17"
|
||||
networks:
|
||||
- name: api
|
||||
volumes:
|
||||
- "{{ data_dir }}/api/db:/var/lib/postgresql/data"
|
||||
env:
|
||||
POSTGRES_USER: "api"
|
||||
POSTGRES_PASSWORD: "{{ API_POSTGRES_PASSWORD }}"
|
||||
PGDATA: "/var/lib/postgresql/data/pgdata"
|
||||
|
||||
- name: Deploy API Redis
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: api_redis
|
||||
networks:
|
||||
- name: api
|
||||
image:
|
||||
name: redis
|
||||
tag: latest
|
||||
|
||||
- name: Deploy Cloudflared
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: api_cloudflared
|
||||
command: "tunnel run"
|
||||
image:
|
||||
name: cloudflare/cloudflared
|
||||
tag: latest
|
||||
networks:
|
||||
- name: api
|
||||
env:
|
||||
TUNNEL_TOKEN: "{{ API_CLOUDFLARED_TOKEN }}"
|
||||
|
||||
- name: Deploy API
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: api
|
||||
network_name: api
|
||||
networks:
|
||||
- name: api
|
||||
image:
|
||||
name: git.alexav.gg/alex/api
|
||||
tag: latest
|
||||
env:
|
||||
NODE_ENV: "production"
|
||||
VERSION: "v4"
|
||||
REDIS_URL: "redis://api_redis:6379"
|
||||
ADMIN_KEY: "{{ API_ADMIN_KEY }}"
|
||||
DATABASE_URL: "{{ API_DATABASE_URL }}"
|
||||
LASTFM_API_KEY: "{{ API_LASTFM_API_KEY }}"
|
||||
STEAM_API_KEY: "{{ API_STEAM_API_KEY }}"
|
||||
JWT_KEY: "{{ API_JWT_KEY }}"
|
||||
DISCORD_PUBLIC_KEY: "{{ API_DISCORD_PUBLIC_KEY }}"
|
||||
DISCORD_APP_ID: "{{ API_DISCORD_APP_ID }}"
|
||||
DISCORD_BOT_TOKEN: "{{ API_DISCORD_BOT_TOKEN }}"
|
||||
TMDB_API_KEY: "{{ API_TMDB_TOKEN }}"
|
||||
STORAGE_KEY: "{{ API_STORAGE_KEY }}"
|
||||
@@ -1,38 +0,0 @@
|
||||
- name: Deploy Blog Backend
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: blog-backend
|
||||
image:
|
||||
name: git.alexav.gg/alex/blog
|
||||
tag: backend-latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
NODE_ENV: production
|
||||
SESSION_SECRET: "{{ BLOG_SESSION_SECRET }}"
|
||||
DATABASE_URL: file:/data/blog.db
|
||||
REDIS_URL: redis://redis:6379
|
||||
volumes:
|
||||
- "{{ data_dir }}/blog:/data"
|
||||
|
||||
- name: Deploy Blog Frontend
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: blog
|
||||
image:
|
||||
name: git.alexav.gg/alex/blog
|
||||
tag: frontend-latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
NODE_ENV: production
|
||||
PORT: "5174"
|
||||
BACKEND_ORIGIN: http://blog-backend:3000
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.blog.rule: Host(`blog.alexav.gg`)
|
||||
traefik.http.routers.blog.entrypoints: webSecure
|
||||
traefik.http.routers.blog.tls.certresolver: letsencrypt
|
||||
traefik.http.services.blog.loadbalancer.server.port: "5174"
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
- name: Deploy CAdvisor
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: cadvisor
|
||||
image:
|
||||
name: ghcr.io/google/cadvisor
|
||||
tag: latest
|
||||
volumes:
|
||||
- "/:/rootfs:ro"
|
||||
- "/var/run:/var/run:ro"
|
||||
- "/sys:/sys:ro"
|
||||
- "/var/lib/docker/:/var/lib/docker:ro"
|
||||
- "/dev/disk:/dev/disk:ro"
|
||||
devices:
|
||||
- /dev/kmsg:/dev/kmsg
|
||||
privileged: true
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.cadvisor.rule: Host(`cad.fntz.net`)
|
||||
traefik.http.routers.cadvisor.entrypoints: webSecure
|
||||
traefik.http.routers.cadvisor.tls.certresolver: letsencrypt
|
||||
traefik.http.services.cadvisor.loadbalancer.server.port: "8080"
|
||||
traefik.http.routers.cadvisor.middlewares: tinyauth
|
||||
@@ -1,16 +0,0 @@
|
||||
# test
|
||||
---
|
||||
- name: Deploy Cloudflared
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: cloudflared
|
||||
image:
|
||||
name: cloudflare/cloudflared
|
||||
tag: latest
|
||||
env:
|
||||
TUNNEL_TOKEN: "{{ CLOUDFLARED_TUNNEL_TOKEN }}"
|
||||
command: tunnel run
|
||||
network_name: "tunnel"
|
||||
networks:
|
||||
- name: "tunnel"
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/cup"
|
||||
|
||||
- name: Create Cup Config
|
||||
template:
|
||||
src: templates/cup/cup.json.j2
|
||||
dest: "{{ data_dir }}/cup/cup.json"
|
||||
|
||||
- name: Deploy Cup
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: cup
|
||||
command: -c /config/cup.json serve
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "{{ data_dir }}/cup/cup.json:/config/cup.json"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.cup.rule: Host(`cup.fntz.net`)
|
||||
traefik.http.routers.cup.entrypoints: webSecure
|
||||
traefik.http.routers.cup.tls.certresolver: letsencrypt
|
||||
traefik.http.services.cup.loadbalancer.server.port: "8000"
|
||||
image:
|
||||
name: ghcr.io/sergi0g/cup
|
||||
tag: latest
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
- name: Deploy Wiki.js
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: docs
|
||||
image:
|
||||
name: ghcr.io/requarks/wiki
|
||||
tag: 2
|
||||
env:
|
||||
DB_TYPE: "postgres"
|
||||
DB_HOST: "{{ DOCS_DB_HOST }}"
|
||||
DB_PORT: "5432"
|
||||
DB_USER: "wikijs"
|
||||
DB_PASS: "wikijs"
|
||||
DB_NAME: "wikijs"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.docs.rule: Host(`docs.fntz.net`)
|
||||
traefik.http.routers.docs.entrypoints: webSecure
|
||||
traefik.http.routers.docs.tls.certresolver: letsencrypt
|
||||
traefik.http.services.docs.loadbalancer.server.port: "3000"
|
||||
traefik.http.routers.docs.middlewares: tinyauth
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
- name: Deploy Duplicati
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: duplicati
|
||||
networks:
|
||||
- name: homelab
|
||||
directories:
|
||||
- "{{ data_dir }}/duplicati"
|
||||
- "{{ data_dir }}/duplicati/app"
|
||||
- "{{ data_dir }}/duplicati/backups"
|
||||
image:
|
||||
name: lscr.io/linuxserver/duplicati
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/duplicati/app:/config"
|
||||
- "{{ data_dir }}/duplicati/backups:/backups"
|
||||
- "/storage-pool/Share:/source"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
SETTINGS_ENCRYPTION_KEY: "{{ DUPLICATI_ENCRYPTION_KEY }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.duplicati.rule: Host(`backups.fntz.net`)
|
||||
traefik.http.routers.duplicati.entrypoints: webSecure
|
||||
traefik.http.routers.duplicati.tls.certresolver: letsencrypt
|
||||
traefik.http.services.duplicati.loadbalancer.server.port: "8200"
|
||||
@@ -1,33 +0,0 @@
|
||||
---
|
||||
- name: Deploy Glance
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: glance
|
||||
image:
|
||||
name: glanceapp/glance
|
||||
tag: latest
|
||||
directories:
|
||||
- "{{ data_dir }}/glance"
|
||||
- "{{ data_dir }}/glance/config"
|
||||
- "{{ data_dir }}/glance/assets"
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
ADGUARD_USERNAME: "{{ GLANCE_ADGUARD_USERNAME }}"
|
||||
ADGUARD_PASSWORD: "{{ GLANCE_ADGUARD_PASSWORD }}"
|
||||
VIDEO_MACHINE: "{{ GLANCE_VIDEO_MACHINE }}"
|
||||
STEAM_API_KEY: "{{ GLANCE_STEAM_API_KEY }}"
|
||||
NOW_PLAYING_VAL: "{{ GLANCE_NOW_PLAYING_VAL }}"
|
||||
IMMICH_KEY: "{{ GLANCE_IMMICH_API_KEY }}"
|
||||
AUDIOBOOKSHELF_KEY: "{{ GLANCE_AUDIOBOOKSHELF_KEY }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/glance/config:/app/config"
|
||||
- "{{ data_dir }}/glance/assets:/app/assets"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.glance.rule: Host(`fntz.net`)
|
||||
traefik.http.routers.glance.entrypoints: webSecure
|
||||
traefik.http.routers.glance.tls.certresolver: letsencrypt
|
||||
traefik.http.services.glance.loadbalancer.server.port: "8080"
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
- name: Deploy Homebridge
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: homebridge
|
||||
directories:
|
||||
- "{{ data_dir }}/homebridge/homebridge"
|
||||
image:
|
||||
name: homebridge/homebridge
|
||||
tag: latest
|
||||
network_mode: host
|
||||
volumes:
|
||||
- "{{ data_dir }}/homebridge:/homebridge"
|
||||
@@ -1,22 +0,0 @@
|
||||
---
|
||||
- name: Deploy Ollama
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: ollama
|
||||
directories:
|
||||
- "{{ data_dir }}/ollama"
|
||||
image:
|
||||
name: ollama/ollama
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/ollama:/root/.ollama"
|
||||
devices:
|
||||
- "/dev/kfd"
|
||||
- "/dev/dri"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.ollama.rule: Host(`ollama.fntz.net`)
|
||||
traefik.http.routers.ollama.entrypoints: webSecure
|
||||
traefik.http.routers.ollama.tls.certresolver: letsencrypt
|
||||
traefik.http.services.ollama.loadbalancer.server.port: "11434"
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
- name: Deploy Open-WebUI
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: owui
|
||||
directories:
|
||||
- "{{ data_dir }}/owui"
|
||||
image:
|
||||
name: ghcr.io/open-webui/open-webui
|
||||
tag: ollama
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/owui:/app/backend/data"
|
||||
devices:
|
||||
- "/dev/kfd"
|
||||
- "/dev/dri"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.owui.rule: Host(`owui.fntz.net`)
|
||||
traefik.http.routers.owui.entrypoints: webSecure
|
||||
traefik.http.routers.owui.tls.certresolver: letsencrypt
|
||||
traefik.http.services.owui.loadbalancer.server.port: "8080"
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
- name: Deploy Storage API
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: storage-api
|
||||
directories:
|
||||
- "{{ data_dir }}/storage-api"
|
||||
- "{{ data_dir }}/storage-api/app"
|
||||
- "{{ data_dir }}/storage-api/files"
|
||||
image:
|
||||
name: storage-api
|
||||
tag: latest
|
||||
build:
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/storage-api.git
|
||||
dest: "{{ data_dir }}/storage-api/app"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/storage-api/files:/app/files"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
SECRET: "{{ API_ADMIN_KEY }}"
|
||||
S3_KEY: "{{ API_S3_KEY }}"
|
||||
S3_KEY_ID: "{{ API_S3_KEY_ID }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.storage.rule: Host(`storage.alexav.gg`)
|
||||
traefik.http.routers.storage.entrypoints: webSecure
|
||||
traefik.http.routers.storage.tls.certresolver: letsencrypt
|
||||
traefik.http.services.storage.loadbalancer.server.port: "3001"
|
||||
@@ -1,23 +0,0 @@
|
||||
---
|
||||
- name: Deploy Subber
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: subber
|
||||
directories:
|
||||
- "{{ data_dir }}/subber"
|
||||
image:
|
||||
name: ghcr.io/azpha/subber
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
BASE_URL: "https://subs.fntz.net"
|
||||
volumes:
|
||||
- "{{ data_dir }}/subber:/files"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.subber.rule: Host(`subs.fntz.net`)
|
||||
traefik.http.routers.subber.entrypoints: webSecure
|
||||
traefik.http.routers.subber.tls.certresolver: letsencrypt
|
||||
traefik.http.services.subber.loadbalancer.server.port: "3000"
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
- name: Deploy Tools Frontend
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: tools
|
||||
image:
|
||||
name: git.alexav.gg/alex/tools
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
NODE_ENV: production
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.tools.rule: Host(`tools.alexav.gg`)
|
||||
traefik.http.routers.tools.entrypoints: webSecure
|
||||
traefik.http.routers.tools.tls.certresolver: letsencrypt
|
||||
traefik.http.services.tools.loadbalancer.server.port: "5173"
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
- name: Deploy Website
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: website
|
||||
image:
|
||||
name: git.alexav.gg/alex/website
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
NODE_ENV: production
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.website.rule: Host(`alexav.gg`)
|
||||
traefik.http.routers.website.entrypoints: webSecure
|
||||
traefik.http.routers.website.tls.certresolver: letsencrypt
|
||||
traefik.http.services.website.loadbalancer.server.port: "5173"
|
||||
@@ -1,14 +1,23 @@
|
||||
---
|
||||
- name: Deploy Vaultwarden
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/vaultwarden"
|
||||
|
||||
- name: Pull latest Vaultwarden Docker Image
|
||||
docker_image:
|
||||
name: vaultwarden/server
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Vaultwarden Docker Container
|
||||
docker_container:
|
||||
name: vaultwarden
|
||||
directories:
|
||||
- "{{ data_dir }}/vaultwarden"
|
||||
image:
|
||||
name: vaultwarden/server
|
||||
tag: latest
|
||||
image: vaultwarden/server:latest
|
||||
restart_policy: unless-stopped
|
||||
recreate: true
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/sergi0g/cup/main/cup.schema.json",
|
||||
"version": 3,
|
||||
"images": {
|
||||
"exclude": ["git.alexav.gg/alex/plex-webhook", "git.alexav.gg/alex/setup-ansible"]
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
metadata_dir = "/var/lib/garage/meta"
|
||||
data_dir = "/var/lib/garage/data"
|
||||
db_engine = "lmdb"
|
||||
metadata_auto_snapshot_interval = "6h"
|
||||
replication_factor = 1
|
||||
compression_level = 2
|
||||
|
||||
rpc_bind_addr = "[::]:3901"
|
||||
rpc_secret = "{{ GARAGE_RPC_SECRET }}"
|
||||
|
||||
[s3_api]
|
||||
s3_region = "garage"
|
||||
api_bind_addr = "[::]:3900"
|
||||
root_domain = ".s3.garage"
|
||||
|
||||
[s3_web]
|
||||
bind_addr = "[::]:3902"
|
||||
root_domain = ".web.garage"
|
||||
index = "index.html"
|
||||
|
||||
[admin]
|
||||
api_bind_addr = "[::]:3903"
|
||||
admin_token = "{{ GARAGE_ADMIN_TOKEN }}"
|
||||
@@ -1,29 +0,0 @@
|
||||
auth_enabled: false
|
||||
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
|
||||
common:
|
||||
path_prefix: /loki
|
||||
storage:
|
||||
filesystem:
|
||||
chunks_directory: /loki/chunks
|
||||
rules_directory: /loki/rules
|
||||
replication_factor: 1
|
||||
ring:
|
||||
kvstore:
|
||||
store: inmemory
|
||||
|
||||
schema_config:
|
||||
configs:
|
||||
- from: 2020-10-24
|
||||
store: tsdb
|
||||
object_store: filesystem
|
||||
schema: v13
|
||||
index:
|
||||
prefix: index_
|
||||
period: 24h
|
||||
|
||||
storage_config:
|
||||
filesystem:
|
||||
directory: /loki/chunks
|
||||
@@ -1,14 +0,0 @@
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: "prometheus"
|
||||
static_configs:
|
||||
- targets: ["monitoring_prometheus:9090"]
|
||||
- job_name: "node-exporter"
|
||||
static_configs:
|
||||
- targets: ["172.16.0.44:9100"]
|
||||
- job_name: "cadvisor"
|
||||
static_configs:
|
||||
- targets: ["monitoring_cadvisor:8080"]
|
||||
@@ -1,63 +0,0 @@
|
||||
server:
|
||||
http_listen_port: 9080
|
||||
|
||||
positions:
|
||||
filename: /tmp/positions.yaml
|
||||
|
||||
clients:
|
||||
- url: http://monitoring_loki:3100/loki/api/v1/push
|
||||
|
||||
scrape_configs:
|
||||
- job_name: docker
|
||||
docker_sd_configs:
|
||||
- host: unix:///var/run/docker.sock
|
||||
refresh_interval: 5s
|
||||
relabel_configs:
|
||||
# Keep only running containers
|
||||
- source_labels: ['__meta_docker_container_id']
|
||||
target_label: container_id
|
||||
|
||||
# Container name (strips leading slash)
|
||||
- source_labels: ['__meta_docker_container_name']
|
||||
regex: '/(.+)'
|
||||
target_label: container_name
|
||||
|
||||
# Compose project name
|
||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_project']
|
||||
target_label: compose_project
|
||||
|
||||
# Compose service name
|
||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_service']
|
||||
target_label: compose_service
|
||||
|
||||
# Image name
|
||||
- source_labels: ['__meta_docker_container_image']
|
||||
target_label: image
|
||||
|
||||
# Custom labels - grab any label starting with "logging."
|
||||
# e.g. logging.env=production becomes env=production
|
||||
- regex: '__meta_docker_container_label_logging_(.+)'
|
||||
action: labelmap
|
||||
replacement: '$1'
|
||||
|
||||
# Drop containers with logging=disabled label
|
||||
- source_labels: ['__meta_docker_container_label_logging']
|
||||
regex: 'disabled'
|
||||
action: drop
|
||||
|
||||
pipeline_stages:
|
||||
# Docker JSON log format parsing
|
||||
- json:
|
||||
expressions:
|
||||
output: log
|
||||
stream: stream
|
||||
timestamp: time
|
||||
|
||||
# Use Docker's timestamp
|
||||
- timestamp:
|
||||
source: timestamp
|
||||
format: RFC3339Nano
|
||||
|
||||
# Output just the log line
|
||||
- output:
|
||||
source: output
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
admin off
|
||||
servers {
|
||||
trusted_proxies static private_ranges
|
||||
}
|
||||
}
|
||||
|
||||
:80 {
|
||||
root * /var/www/html/public
|
||||
encode gzip
|
||||
|
||||
php_fastcgi 127.0.0.1:9000
|
||||
file_server
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user