Compare commits
4 Commits
master
...
feature/au
Author | SHA1 | Date | |
---|---|---|---|
dbdd2cfe11 | |||
1be4868f09 | |||
ee24d69906 | |||
f0a10cc1d2 |
2
.idea/alpina.iml
generated
2
.idea/alpina.iml
generated
@ -4,7 +4,7 @@
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Poetry (alpina)" jdkType="Python SDK" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="PyDocumentationSettings">
|
||||
|
10
.idea/jsonSchemas.xml
generated
10
.idea/jsonSchemas.xml
generated
@ -106,16 +106,6 @@
|
||||
<option name="applicationDefined" value="true" />
|
||||
<option name="patterns">
|
||||
<list>
|
||||
<Item>
|
||||
<option name="pattern" value="true" />
|
||||
<option name="path" value="*/compose.yml" />
|
||||
<option name="mappingKind" value="Pattern" />
|
||||
</Item>
|
||||
<Item>
|
||||
<option name="pattern" value="true" />
|
||||
<option name="path" value="*/compose.yml.j2" />
|
||||
<option name="mappingKind" value="Pattern" />
|
||||
</Item>
|
||||
<Item>
|
||||
<option name="pattern" value="true" />
|
||||
<option name="path" value="*/docker-compose.yml" />
|
||||
|
12
Makefile
12
Makefile
@ -1,23 +1,19 @@
|
||||
.POSIX:
|
||||
.PHONY: *
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
MAKEFLAGS += -r # no use of built-in rules
|
||||
|
||||
env ?= staging
|
||||
vault_id ?= alpina@contrib/rbw-client.sh
|
||||
|
||||
playbook_cmd := poetry run ansible-playbook --vault-id ${vault_id} -i inventories/${env}
|
||||
clean_desired ?= false
|
||||
|
||||
all: site services
|
||||
all: site
|
||||
|
||||
setup:
|
||||
poetry install --quiet
|
||||
|
||||
site: setup
|
||||
$(playbook_cmd) site.yml
|
||||
poetry run ansible-playbook --vault-id ${vault_id} -i inventories/${env} --extra-vars "clean_desired_arg=${clean_desired}" site.yml
|
||||
|
||||
services: setup
|
||||
$(playbook_cmd) services.yml
|
||||
|
||||
clean: setup
|
||||
$(playbook_cmd) clean.yml
|
||||
poetry run ansible-playbook --vault-id ${vault_id} -i inventories/${env} services.yml
|
||||
|
@ -6,38 +6,23 @@ default:
|
||||
- subnet: {{ docker_ipv6_subnet | ansible.utils.ipsubnet(80, subnet_index) }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro traefik_labels(host, port='', path_prefix='', auth=false, wildcard=false) %}
|
||||
{% set name = host ~ (wildcard * '-*') ~ path_prefix -%}
|
||||
{% set tls_base = domain %}
|
||||
{% if wildcard -%}
|
||||
{% set tls_base = host ~ '.' ~ domain %}
|
||||
{%- endif -%}
|
||||
|
||||
{% macro traefik_labels(host, service="", port="", auth=false) %}
|
||||
traefik.enable=true
|
||||
- traefik.http.routers.r-{{ name }}.rule={{ host_rule(host, path_prefix, wildcard) }}
|
||||
- traefik.http.routers.r-{{ name }}.entrypoints=websecure
|
||||
- traefik.http.routers.r-{{ name }}.tls=true
|
||||
- traefik.http.routers.r-{{ name }}.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.r-{{ name }}.tls.domains.0.main={{ tls_base }}
|
||||
- traefik.http.routers.r-{{ name }}.tls.domains.0.sans=*.{{ tls_base }}
|
||||
- traefik.http.routers.{{ host }}.rule=Host(`{{ host }}.{{ domain }}`)
|
||||
- traefik.http.routers.{{ host }}.entrypoints=web
|
||||
- traefik.http.routers.{{ host }}-tls.rule=Host(`{{ host }}.{{ domain }}`)
|
||||
- traefik.http.routers.{{ host }}-tls.entrypoints=websecure
|
||||
- traefik.http.routers.{{ host }}-tls.tls=true
|
||||
- traefik.http.routers.{{ host }}-tls.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.{{ host }}-tls.tls.domains.0.main={{ domain }}
|
||||
- traefik.http.routers.{{ host }}-tls.tls.domains.0.sans=*.{{ domain }}
|
||||
{% if service -%}
|
||||
- traefik.http.routers.{{ host }}.service={{ service }}
|
||||
{% endif %}
|
||||
{% if port -%}
|
||||
- traefik.http.routers.r-{{ name }}.service=svc-{{ name }}
|
||||
- traefik.http.services.svc-{{ name }}.loadbalancer.server.port={{ port }}
|
||||
- traefik.http.services.{{ host }}.loadbalancer.server.port={{ port }}
|
||||
{% endif %}
|
||||
{% if auth -%}
|
||||
- traefik.http.routers.r-{{ name }}.middlewares=authentik@docker
|
||||
- traefik.http.routers.{{ host }}-tls.middlewares=authentik@docker
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro host_rule(host, path_prefix="", wildcard=false) %}
|
||||
{% if wildcard %}
|
||||
{# regular a.host prevents warnings from 'No domain found in rule HostRegexp' #}
|
||||
{# TODO: figure out this stupidity properly #}
|
||||
Host(`a.{{ host }}.{{ domain }}`) || HostRegexp(`^.+\.{{ host }}\.{{ domain | replace('.', '\.') }}$`)
|
||||
{%- else %}
|
||||
Host(`{{ host }}.{{ domain }}`)
|
||||
{%- endif %}
|
||||
{% if path_prefix -%}
|
||||
&& PathPrefix(`{{ path_prefix }}`)
|
||||
{%- endif %}
|
||||
{% endmacro %}
|
||||
|
@ -5,31 +5,25 @@ alpina_svc_path: ~/alpina
|
||||
base_volume_path: /mnt/dock
|
||||
media_volume_path: /mnt/media
|
||||
|
||||
docker_ipv6_subnet: "{{ \
|
||||
ansible_default_ipv6.address \
|
||||
| ansible.utils.ipsubnet(64) \
|
||||
| ansible.utils.ipsubnet(72, docker_ipv6_index) \
|
||||
}}"
|
||||
traefik_subnet: 172.16.122.0
|
||||
|
||||
# Authentik
|
||||
authentik_db_password: "{{ vault_authentik_db_password }}"
|
||||
authentik_secret_key: "{{ vault_authentik_secret_key }}"
|
||||
|
||||
authentik_sendgrid_api_key: "{{ vault_authentik_sendgrid_api_key }}"
|
||||
|
||||
auth_grafana_client_secret: "{{ vault_auth_grafana_client_secret }}"
|
||||
auth_minio_client_secret: "{{ vault_auth_minio_client_secret }}"
|
||||
auth_gitea_client_secret: "{{ vault_auth_gitea_client_secret }}"
|
||||
auth_nextcloud_client_secret: "{{ vault_auth_nextcloud_client_secret }}"
|
||||
auth_minio_client_secret: "{{ vault_auth_minio_client_secret }}"
|
||||
arrstack_password: "{{ vault_arrstack_password }}"
|
||||
auth_vpgen_client_secret: "{{ vault_auth_vpgen_client_secret }}"
|
||||
auth_pgrok_client_secret: "{{ vault_auth_pgrok_client_secret }}"
|
||||
|
||||
auth_default_enrollment_group: vpgen
|
||||
|
||||
# Minio
|
||||
minio_password: "{{ vault_minio_password }}"
|
||||
|
||||
# Monitoring
|
||||
## auth_grafana_client_secret:
|
||||
influxdb_admin_password: "{{ vault_influxdb_admin_password }}"
|
||||
influxdb_admin_token: "{{ vault_influxdb_admin_token }}"
|
||||
|
||||
@ -55,23 +49,3 @@ jwt_secret: "{{ vault_jwt_secret }}"
|
||||
nextcloud_db_password: "{{ vault_nextcloud_db_password }}"
|
||||
redis_password: "{{ vault_redis_password }}"
|
||||
nextcloud_sendgrid_api_key: "{{ vault_nextcloud_sendgrid_api_key }}"
|
||||
|
||||
# VPGen
|
||||
vpgen_auth_invite_token: "{{ vault_vpgen_auth_invite_token }}"
|
||||
|
||||
vpgen_opnsense_api_url: https://opnsense.cazzzer.com
|
||||
vpgen_opnsense_api_key: "{{ vault_vpgen_opnsense_api_key }}"
|
||||
vpgen_opnsense_api_secret: "{{ vault_vpgen_opnsense_api_secret }}"
|
||||
vpgen_opnsense_wg_ifname: wg2
|
||||
|
||||
vpgen_ipv6_client_prefix_size: 112
|
||||
vpgen_ip_max_index: 100
|
||||
vpgen_vpn_endpoint: "{{ vault_vpgen_vpn_endpoint }}"
|
||||
vpgen_vpn_dns: "{{ vault_vpgen_vpn_dns }}"
|
||||
vpgen_max_clients_per_user: 20
|
||||
|
||||
# Woodpecker
|
||||
woodpecker_agent_secret: "{{ vault_woopecker_agent_secret }}"
|
||||
|
||||
# Pgrok
|
||||
pgrok_db_password: "{{ vault_pgrok_db_password }}"
|
||||
|
@ -1,158 +1,113 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
39313964356339363432393662666162343133633033316465636433323339323931303866646635
|
||||
3630663865626431396563346365363636383637626263620a633332623365643765386566356336
|
||||
65356439386565306461313863633835623031656136393039326366623137333536363836316563
|
||||
3062356431346539330a366534646239353934363137373662343862393365373835653530336166
|
||||
34613763626630316431326133366461363030663137366536393764356437323235343438326237
|
||||
36656234653363623836303863346233616661623135383130663930333365373733663134323234
|
||||
39666233643733653336386234613563656134396638373561323432313631633166386266323865
|
||||
66313630333332316662643434646465343861643461373631396538663763633263323738616330
|
||||
37316561663231366336383539306130396631643839383563643363623362376266356565363434
|
||||
31306634356162383839613464386664633237343461646132366439613563623732346362363534
|
||||
39636635396133336330373938366236646237393866316136663537363138636239636638386363
|
||||
37623131636133343062306139666666393566333665356566313530383033636534383132373765
|
||||
31303362303237623337323632373161306138353666633462386165633935626536396135363330
|
||||
62633233316664656166306438653039306564633336616661306366306634333734353866313765
|
||||
30386236643033303537336562643431306232656162663066643238353662303533616130303335
|
||||
61643436333063313164353366346564336366663431663636653334326262626635326264653938
|
||||
37393136336336656538366533626566366365313837383236653762653464666336353862313434
|
||||
64646431363462643839643937646537306433616565303466626530386366373934376665303638
|
||||
63653164623231636539643332356162353134646130626365393166373932386530313030336136
|
||||
30303138373432306665376432646664336461303564333535636463373232303661323336633536
|
||||
63366363393161613832356362356437666365333062303635363961343739373739343364646331
|
||||
63383131363430393331666331613965666239393865346234646632353962333531346239333333
|
||||
39643832386363353461366332366138366134333638666664383434353262376263386531346262
|
||||
36383365613764363135343765313863306135373062613362313761353165613166613966366363
|
||||
37616163643230343062336462666233666438643332343963666161333631663532653733376239
|
||||
37383335623337343761643936333264383766373137393964636138663362643064363666643130
|
||||
39636639646264303333623036373439636566346437643539656531303534376139613832396638
|
||||
37373736343538663062633132376164386635333038656338373037633033623238633035333130
|
||||
65316330393261326139373331386239636230376237386664386134663131343836393464646362
|
||||
39366434313034383561623664343530633165316438333830346330653730613264656661303061
|
||||
34393863306465373639306531643534366464393365373264316136653334356530376366303330
|
||||
31383137306439616362313861396633333430626463326531336533323038333336313337396338
|
||||
64636161333839366536643662653563613138633331316166333766666537386666616161313531
|
||||
62363666646635656233363962346333393861303165643130333435613436366131393463663162
|
||||
34623536316363643539663261373830316638383439326431373866646436616635303466343830
|
||||
33303362356166333338333265633366353538353135353933383939343562633433333337363564
|
||||
37366536343066326338313262313830623263356464323565373362356631303538646366373635
|
||||
31343861626636313530343964656133333031326634333434643037393436313833306133396563
|
||||
61333636646437623963666265666565623965386364376430666662336365363762316639343939
|
||||
66303164303161396463363265393966306636616231633838366437626162323465356430643333
|
||||
66663633353462646334663034373465343432626638383237383330313932663930663962656665
|
||||
62363133306632613062393830316135333965623963643337336638366236343533323832633564
|
||||
66643331623263393966343930613430646438386563646235363837376230373365346462633937
|
||||
37333431346363303630313265626533373662613332383236313736663534306132653635333464
|
||||
30643761613762353536613531326334336138323934393832393765613533666432616631396337
|
||||
36373261313236666365656563316330313061336664646230393931616264643864623263333132
|
||||
33336263663164343962383366333264633735383731613939383333343265366166346534326538
|
||||
31636136643466623037333334396162333435303062313861626435623134386432333065383865
|
||||
62343435396233376366656365303966633533633232303763616234396365306338326562363234
|
||||
65313437396534346661643365363533363133663133613733316331663364326131613464653133
|
||||
63386535366138636436616666613664663632376430623063343030393631386233346133373466
|
||||
39386436313566636662306438373932386232353865363736383962353864373132363564393133
|
||||
38343439313766323035363238336335333063323730396161303634313738663931316262613164
|
||||
61623939666263323563313131383064386632663132336234373132316430306431636535393663
|
||||
66653835396431626633616236666365333264306662333865663739623430656563393133393938
|
||||
37633665633961326162666232386338316432633139386233393834376533326333343435643562
|
||||
32353664383436633832356662326265613636636534346432356534303061633337313139323138
|
||||
66303064366636316537333735336232303964333139626161373138373765303464633835623333
|
||||
66623862343636343134363266666164666432393835316165333465363736643735643134636364
|
||||
65383037646633613564363436663235616530643631356462383337396437653437613933653739
|
||||
64396434343839393638363866386234393132396262363637643466333439656464326364393231
|
||||
39333635643165666331636230333931663561663532326338366136343832613862616466623132
|
||||
37653139343235656335336566356631663938646631626562363130393031346133326562656366
|
||||
38623633346632393263663536623131316662646130633533333431666162353834363537633631
|
||||
36643439313734396365633533303930626431376132656439393838306662363934663764373939
|
||||
65623136363239636161343162363265313036346332333864366363663933356264663935653762
|
||||
61306135366562613162616538303334626433633731613530613837323433306235393338613532
|
||||
35626366613535326363643864663863303734373435636664653931613462336332353334323365
|
||||
37616539343335386636306138656233396238636137636130663035336365653230666436663030
|
||||
63653136636162386630656538636338646531336335363737333062383138646538356137353837
|
||||
61306235303564653065653034633762653466376530653338383362613766313563636232613934
|
||||
63373466613136663035646134623335383037653231333035323036653264636161623766643332
|
||||
35323530386333333563373565356130393836343137656361316437343235343235623539333963
|
||||
36396565336233373433643466643330623434363261643933666332386536323332643466363135
|
||||
64353464386365313862323032363932656662376464323830326432313737336166373764303034
|
||||
66343664613839323731643463323239303138303234316564626438663031613763393532376531
|
||||
30333037386138306466313332346139363238323736656463633038323261363862666433663865
|
||||
34333464363637313362303863356236376531643161646632303265646337616532323039373562
|
||||
31316262643764353937336433343630396534653831376231626338643033353939363562636535
|
||||
62326634396538393564353531343461353137613932386531353362313262653363623633373131
|
||||
33353861373136663162383439616131303639313931616633333538363436353934636530303461
|
||||
30346237373331356335656632633632353735386433313934323031646339386631373838366331
|
||||
35303736373432343361643439316333386233633634393464343164633161643436306637336234
|
||||
62373136303263323133303839333438633038356161653839333139383633366333616363303766
|
||||
34313236306462366261336331306634373538316435623963313335383130653732323032663234
|
||||
65626131353839373137346166633164303462336234666230383664383139323036393732373531
|
||||
32653034326134626133313363613432663366373739653332376364636139666261353536303437
|
||||
33626332376361653930356261316162623134303135346235616165323632353538653661393261
|
||||
37373561616237353133646466313262633632383533656632633431643131333366306662653361
|
||||
39653066326564383461623035636136613035613962623131633734663262313532653366306530
|
||||
38366132323030346262366262363231303737646131633931363162383461333262316564383861
|
||||
32313537323637363163646335333566333463366265323438386230333765396334646436623234
|
||||
62653233306433643261373262376535616365363065346431333331653164306463643033333930
|
||||
34383533336536613233663630656561653034333134326563613538613134633038356265343839
|
||||
36303266303363666335323831613430373536346336333934643338373064646365386365316633
|
||||
37303565653565653334643463323137366137346538613632343131383235326339333235373562
|
||||
36326230333734373365376239306664616433373664343462383961366636383263333764646362
|
||||
32383463343130313931656436613235336561383165613737643835396264616262356431333564
|
||||
36313965323164393633653330366666393337363831653763343938653464383235623236343332
|
||||
30653034386136643961323034346262613566373534333464653235636164393931393131316662
|
||||
65656462623431613239336431313239343762643731663438323333613661343462633038333264
|
||||
31303435313431373461623564396336386131383565376162386439383562653036373262643662
|
||||
37326634646233326461633236336364356133383135326638623063313332616539353538663432
|
||||
31396135396430646635323335323666646265646339333838326261393963383331356334303630
|
||||
63313465356233363636336136356336366333636261613663663433343535323563663062626361
|
||||
35323161376466383966343963306237396362323736666331633235383832376364343037656433
|
||||
33326638396232396666393939303735636337313730363137663839393662613333393061386536
|
||||
35353132366432623336333331386234326139653435376261366631356538303562383034623338
|
||||
66353834633161313462663531623762356561393535656535613663393137663436313466633364
|
||||
33313533343633376638333339653834313231393131363866333961393639393665373638353930
|
||||
39653831613563313537333137323633613536363536613335363836336339613135346330626335
|
||||
63323038626462656435343431326663643332363962393863393461336334616637316462363538
|
||||
33333762393164396435646266376534363861633430643265646662626630643035396466363537
|
||||
63386233663130373335376334353630386662306563323736623265333230623136356664666639
|
||||
32316139386165623264616466353765613239313635653635343439666337656335393334323939
|
||||
66393331653266316330633535636534663436316235373231626664393565303161643730323537
|
||||
36373063326339326339653232323331663532653337343638653236306263313264323734303465
|
||||
33363239653634623630393961346139343230363135393830336139386130356239346430306238
|
||||
61616433343566393962656532333833363036373235386530303237653537363139373962386364
|
||||
32336231613362353131623263313539623330663632646135313038346161346135353233303965
|
||||
39356331626465613036376266376264396563373239333834336337383332646536346636623666
|
||||
31386536343964643433616638386161383935386165363230643131336439623835326136646161
|
||||
39343035383039396235653364396638656334396231323263636534633932386161616233343063
|
||||
61373462366235383564313762366334313137363636333732313663356233653133323537663331
|
||||
64636336663862303335316432393663653436313834323231663730623562373333346634303138
|
||||
31353662333139626133623564333863363565616466353266343737616163386432636631613136
|
||||
34313530383934336138336535373562636366653663383238376136376561306532383933336236
|
||||
62613361613539663030323832666430356138376236383335393538306131333061313339323163
|
||||
32313131383134663838393462343963623962613638656462356664303132386233363063316266
|
||||
35656635333861366435396638653934663935306230373962346633613431353461373933316435
|
||||
35373134643562616662656130396266613365326565666536653732333635346338643435376264
|
||||
65323237386565363431653930373137633330363764663063393335633638653036623732316464
|
||||
66373863303364333534316464636130633665383439626531383466313330393233663933666438
|
||||
36333535636562396361643564343534626436373961636261666135386635316331326164316565
|
||||
34386565636538633361613235303862303231343664363465373363306461356333363764356163
|
||||
65396533626238356331346434383435343135326135366235393862663861636361363032613266
|
||||
34633631653261653230396338363762376563613138303533653530636666313864303334626261
|
||||
34346436316564663632303634343837303065306530306662343062633738653635653164656465
|
||||
36393239373763666131343739303132616366353365636338333263326539343862623462653639
|
||||
64616430663033663162306335303230643131633763633635306464346431393237666536343130
|
||||
35366231386237666331383132373835616365316665353235623735363530626266366437326537
|
||||
32326230306562343830666135326464383834623461643465336131356332376235623735633232
|
||||
62663535303661376465303533306530636366356632626137353135336264356266366335396539
|
||||
31616661363065366136323061303764366332326362653036353562336561336166316664346661
|
||||
63303835626463303731376337366265653931343238316631333032656535376439313335326265
|
||||
62383761623437323862643035333832653065396439303738343336653961623563383964326338
|
||||
38613464653530373938333737316133353064356362323933383765363566343638303233616233
|
||||
63333039363063616464616465313166626262363030326565346461313034633432643232356336
|
||||
65306534366234333562333764653539333935613166313065646430343834653833386434613436
|
||||
62613033313632623236663731343533643864373139613739336135353833386438353461626336
|
||||
64336334646139633633656266633034373461656539633238383531356537396439363233633466
|
||||
64663639383166303261303864383137623236643934356665623537363839396565633863376639
|
||||
64376131356637333562663731393437653236393366303830323239643736386464326539636234
|
||||
61353939356465656465666263336232373733326331623831376539336438373265666135306134
|
||||
64303736346431633332633635633839663235373864323664343830393336376336633235373164
|
||||
64326335326664376530313838386266613632633764373430643663306434303263613234616438
|
||||
6230
|
||||
62376365353162306161343336623464386634383663663165393632366666633530373636633032
|
||||
6536633438613664316163613236663334663635363665630a666135396430306536646534616535
|
||||
65383432356339643063373232393861333366393038666134346363646130626130633861646536
|
||||
3134613738333465300a363031626561376533343730353361646462306434663564336538666565
|
||||
38643166326439356138653163323030626539393265613833303661313036336562373938323663
|
||||
39336533383636626464343461653836313734393430306238336561323038306238646236393835
|
||||
62643638636137646162616239636561666432376561393338336663366438346530346666396662
|
||||
63626432326263383561633532613039643862303135643262383636666161663539643465616566
|
||||
66303364333133393932643666656263613063373162373265353433616337636337363363353938
|
||||
31613638633462383031356433393765353439373434356366336234316361393862343763643333
|
||||
61623233633664396564376462336131353061303831316466306632663261666161323137333633
|
||||
39623938633861356136636532373139356339636334373137303034646431363438613936636438
|
||||
38363463386664643439313564313364613962346631343663633837326532613933336462636265
|
||||
32616161663065316661313335373234353161653732303965613731633665646532386139383732
|
||||
32363834636532363262646433616563363232643864653365643736353434346130383963393564
|
||||
34333861326633393763653639663666333061613161393864323165303638353962333531333661
|
||||
36316534303365626562643366393836356337303533313237613534313565643832373438373530
|
||||
32393065653538393762333232636235316439653935663437616236326162313464323037336630
|
||||
39323262333530363230353334356461343866346438626533633339386162336337623137393366
|
||||
32373361393231343134626237323062663634323939613461633866353561636334613234336532
|
||||
61306235363037306466656463653836396434313830333031366630373364343637376662346663
|
||||
65663132346239343937636261643238623364633062356163323364363466666661346364356239
|
||||
32653266303837663237333136316464626161626136336333363964636461616138323962313166
|
||||
64643930333964303639393439666432366435386464326561323165353333623765653132383636
|
||||
34326633663331376563613766383734613762653834356561616461303361373662653337623863
|
||||
37633135393861366137613137633265306137326536363632373962353233373735663065653534
|
||||
37333038363330633931353233623236313332336234393333616238353137656363643230633966
|
||||
32636336663762636130343933373834386465396536316439386465623130396266393438396262
|
||||
63636561623533366166393831383035373935643037326265636634646339336264383937366334
|
||||
37373961663330326131343531356238363632663861376362643561643966636364653235303032
|
||||
33363861396336666332356130353638373135376336373236383730373665623336373830643137
|
||||
35613234343966383264643834353162353533373939346561363438376339656239323364353036
|
||||
63623630643930363739326236653435613538393438326331383366666332383763356631356533
|
||||
39393363366261393231386239363161313939396431323630323062393962313933633462303439
|
||||
35623831356638333431313430343832616438343134613538343064323535613539663431643830
|
||||
32623363343733623837366236393136393864353332316538306463346337363264613763326463
|
||||
65366536326463303062663262636563306565323861666661376338633334383138626364333039
|
||||
34333734656331346334316465333339333535333632383963663633383361383661643235383866
|
||||
32326634643633366566306137383066653334323935363066316366313934373663383234316438
|
||||
35346139633239323431386536656464666161656434316238356333323665333661623364653865
|
||||
33636139333866356630323031323162323834303062363637313430313164326636383436383465
|
||||
35333434613632353265633935343164613266383463633631323763633565353039306134656431
|
||||
37616430633736326139366438613666346434646363313032366231616436616535393334613264
|
||||
34646132303061383034363139613362626235383938393535626339353438626635396561346166
|
||||
36666530613634336666653638353734323336366639626465346135323838343565383335313233
|
||||
62356631666135666434363061666234396337323838303866343839383164643939323862616632
|
||||
34646433333031653939313434613435623036346631643265643663613537323061343733326534
|
||||
64626663306338623533333132613333386562306162343438653266356666663535623036616666
|
||||
64613866663261386233343236353931353766323833623631373438353664393137613032366461
|
||||
63623164353435336564613739353863383037326465363462376536663934626362393132313465
|
||||
66353965643763656564366630353131313465656265613434363538343331313666613564313036
|
||||
35396436633233623261323432666237303335333339393363636362376536343837346264383935
|
||||
30346163353338336661646536643536623262343762303766393438343666623063326463346566
|
||||
34663538656133353639333830316562376137643666323832363666623766366131303830626531
|
||||
62313832316533663261353365343733636236643333396561333636303065653732646665386136
|
||||
31386535663732386165623037373763333731343461393431306339393634346130646462646661
|
||||
61646539613964666437623631643333333435353039633531313364366338316365396131346331
|
||||
30363963633236653364643061316237326362653462656563656165346134656338383738613932
|
||||
65333432393534643331396563643865656435373563613939616234636533383731336561623037
|
||||
61373839343132376465343332343165316361383831333538313531333063633632643832633536
|
||||
33313464643239323963346338386566313031306233336562616638353365666237346262666134
|
||||
33646134393531346637376133393039326638316334626333363162313239393239663865323730
|
||||
30343731363031303565643833313135643036666461366666376132663433343662333730373137
|
||||
65636236313561613637343262653833666135653832363466613138363332393061653032333933
|
||||
66376263663830333937336566333461333431393336333161623233353332396437396664316137
|
||||
64363737323036366635613938346261383634353237346337613933303334623434623439616533
|
||||
32353465336237396133643039613730646661643039363836333733353033343236373864626634
|
||||
37666562653233336464633337353963363361646334373863653032353137363738613561613135
|
||||
66356132393630613031316466663837633633383033633064326565303837633062336531373866
|
||||
34666537303033323362363163353666383962333536303135363666653930326166323637636266
|
||||
34306537343238353833313635306663643737653531313435383064383133366364646331306261
|
||||
66363763353534643833316533383364353632343439393032313437633734323031383438633333
|
||||
31616362343332373333626135396435366235313465346639326564353265643133313339376639
|
||||
63333233653833653333373162633033623035633832333566653536343832373035636664643839
|
||||
38393864666430313162366337653836333135333738653763653261343233663666373865383366
|
||||
65343038646166343934376633613337306436336130626363396339313236653731653265383661
|
||||
34633332343639333533316631643763363664666563353137383639616132313363383137383132
|
||||
33343635386139366230363464363731383166393430396533613438366661353439353537346530
|
||||
62366461653534333834386637363364346432333964306639376339313531383431323930333530
|
||||
37383665373937303732643636383539393039663363623337663938303139663039366536323031
|
||||
66613036326263316239646535656163626232626130336465303166336336316435343262373631
|
||||
39613536336366366435326230653339356635636432303862306636613935306432323966313234
|
||||
65623938316162393931343337326334666235666362313739343564633339653962313062393431
|
||||
35373338306332326133333638636137386337343261386663333261333030343635336532373134
|
||||
38626136383936393339613534386539663035316335656566656639613837313239626431386362
|
||||
62643733326636323635373363333964643132323562633430626666616531656639383231336432
|
||||
61653439376663613161396465343638623639653135363863336363343230636336346434326234
|
||||
32343962666337646435653035333431333632363239616535333835393761353366386561356366
|
||||
37356530333763346137653566643134376136656638386334343038376439643037623338643333
|
||||
66626537633931333465383062303766333436346433636434653139333966613865656234346539
|
||||
36376239393632653536306363313633636464343366373862343039306235303766623462633932
|
||||
32313537306530343032663365626330363838396566356534343766383865653231613538323461
|
||||
37303439393733376539613061663937633665663963613236323764653835656563346565636531
|
||||
30363239376139343166346664306234363031623031663266643966636265666163353536346132
|
||||
65623638323065633361373330386334636332306634636336613365663133373835666135396230
|
||||
38373939366534663336376135646237633232646261383964383735353533303862623064313333
|
||||
33633533653537376138623635663465336131383838663237653933623634343761623731366335
|
||||
64653233366335656365656336303862656663303138643531356661373831633062633734363661
|
||||
39306633323337356366383863643034656135393432386638353761323337373631353436383664
|
||||
34623631306663636439376464383831323566666266613536613661633266343732646264306162
|
||||
36353030343538316330313831626232353165323038363034666161336338316536353832353966
|
||||
35336365393563643733363535393763613865663436616130343066303638353431653039356661
|
||||
34393936363764393032646133326432656230353232623339646165663932366130363734663762
|
||||
34303433376666383639663661356334653939663739643139363237623031666632623239343562
|
||||
30656438623236616637643132613666343133393436346635316638633664316363323832393862
|
||||
39643831363633643562323664613666393033656132333964643639333230353763383330343835
|
||||
64383530373332343838666536303363313033303931646232343037303863343835366139326135
|
||||
34336330343365663837396134653566633536643832373433393035366531323035616462363639
|
||||
66336133346139336264346636643735383136343336303133313031653230366166396239303335
|
||||
64656535326465363563396532376538336434643964336264303061393139656139376635633730
|
||||
62326664613766393435383464363538393937313236363630656337356264633134353464393835
|
||||
32653133383732656235
|
1
inventories/prod/group_vars/all.yml
Normal file
1
inventories/prod/group_vars/all.yml
Normal file
@ -0,0 +1 @@
|
||||
domain: cazzzer.com
|
@ -1,8 +1,6 @@
|
||||
# Environment specific variables (prod)
|
||||
|
||||
---
|
||||
domain: cazzzer.com
|
||||
|
||||
docker_ipv6_index: 255
|
||||
|
||||
# Arrstack VPN
|
||||
@ -11,16 +9,6 @@ wg_psk: "{{ vault_wg_psk }}"
|
||||
wg_addresses: "{{ vault_wg_addresses }}"
|
||||
fw_vpn_input_ports: "{{ vault_fw_vpn_input_ports }}"
|
||||
|
||||
# Authentik External OAuth
|
||||
# Authentik GitHub OAuth
|
||||
github_consumer_key: 32d5cae58d744c56fcc9
|
||||
github_consumer_secret: "{{ vault_github_consumer_secret }}"
|
||||
google_consumer_key: 606830535764-9vc8mjta87g9974pb7qasp82cpoc1d3a.apps.googleusercontent.com
|
||||
google_consumer_secret: "{{ vault_google_consumer_secret }}"
|
||||
|
||||
# VPGen
|
||||
vpgen_ipv4_starting_addr: 10.18.11.100
|
||||
vpgen_ipv6_starting_addr: "{{ vault_vpgen_ipv6_starting_addr }}"
|
||||
|
||||
# Woodpecker
|
||||
woodpecker_gitea_client_id: 3b7515f3-6005-4512-a2ee-5464dba315f8
|
||||
woodpecker_gitea_client_secret: "{{ vault_woodpecker_gitea_client_secret }}"
|
||||
|
@ -1,32 +1,21 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
36313835643238353932323631323439626432316436346533376365633332313963666433313333
|
||||
6134633133636133623130376237373462383164396338380a316463396139653161366536636336
|
||||
64346664356538366538363239306631326464633635316161663963326635656430326637333963
|
||||
6462633236353132300a323062353639646238663737353461633733636530613036316364353864
|
||||
34326534376639643734303137613866393464306334336566653134333765356361386436323939
|
||||
35393535303635376162386266396431313739663961643061623037343463303637623130623131
|
||||
31653761616639613964386432643561376637316435333064343837636463303033333432636234
|
||||
39323735373161616133396566316266383165343033666530376333626264643531613334363634
|
||||
35393766623361346461333764666139366632306362613362376133363239656562346263643066
|
||||
65616538366532346537383432663766366161633234373562623531356339666661346164306563
|
||||
35343339386631383462656466303563376237386137346437323634626163353464356462346364
|
||||
35373061636237383335396231326563366230663566333665326338303564326263316630666233
|
||||
65303930663862313137333630353837363265333532303133306466643462626662613166326132
|
||||
66346439333739653965346236313766346532356233333164633538326135643662623533646561
|
||||
65626530386333303362343830653430653866336261623566616362313739303939656364656363
|
||||
37336331353766633534653936626139303061623531323362346564363665663438646533646166
|
||||
62376534653562373138656465666133353235313935626534383537643436376665613865303363
|
||||
62326562396361306131616363363866316232623635353663323537366563333239383636643763
|
||||
35623366663463303831323730363036306363643364303532326339353633393739306366396331
|
||||
33313230656431623462376135623438633164323064653866646165643263383832353138633931
|
||||
66306463346361646561376334613837383762366365666638643434383034376339643239646463
|
||||
66343461363233626635323535336462666339323032616136396239396534346434623238396330
|
||||
37653665643366323362313136386231396532323035363963623738346564356435303263303832
|
||||
37346532366432363638363330316464366361313461626535616165333433343835393565633766
|
||||
32663162386562373035333335303332323136613233613431386265626337653939326435396262
|
||||
61303631633838613962346663326232636438393563396230306361333335383462653432383766
|
||||
35376662353262303635316635363130383032366530396439613861653037383234363831333562
|
||||
37343332646534353838626366623361636261393865363633303631613837323733626264643835
|
||||
63376430613234386463336234623062656534643863656434386134616265333666613939393331
|
||||
39333166393538306135313431303831623063363533326330633062653333313733653831383736
|
||||
613864303461323739336563356161353234
|
||||
61656162363565633436373135333536623561663136303736393865623830633539376362363363
|
||||
3938333137343336626634346262363964316563643261310a366538363037343965363766646535
|
||||
61636239326464373039333462653562373933396665393039633266326234663335363337666439
|
||||
6137323332303533640a383062383135633762323561313666636566306531306636633466316536
|
||||
66623731626266333731303336323733343336626366343833633365616330343565363035323039
|
||||
35313961383131616133386663376331336639633137383137346164353632653939363266613562
|
||||
36316631366661353632386230306532633862393963663465383862653964646462666334396666
|
||||
66626636353539316266343937623662613336616331626439306538363764636366656635356639
|
||||
30663535393366383261333832356237373230663037373638303161303534636230616464636265
|
||||
37623938303638646233346338616239393838396433313063343065386666323264646461373032
|
||||
63376661646139316430303533643063336634333364643231336130613638626431623732646434
|
||||
63643833353164313465633333646232653761356333323933396666323837656334343866363762
|
||||
39646263653137356632323534356631366531636530613736343438393136363835373435636230
|
||||
30313163386335353935663432323033326235653963653930396235373863373232666334326661
|
||||
34336632666365666563326366376461386130343965363832343430396537323734363533353065
|
||||
64313837623366356261383437306465633730353332636561333462356363326132313933653234
|
||||
66363634333664333433613466396639306436353035346134373430663532373934343861323262
|
||||
30666664336336393835346234316238613839326436363162626439376530306133343530303365
|
||||
65393030633237333166336637363435646435323736353461333932366638333264333239373733
|
||||
30623062643336643431
|
||||
|
@ -1,2 +1,2 @@
|
||||
[alpina]
|
||||
debbi.sys.cazzzer.com
|
||||
debbi.lab.home
|
||||
|
1
inventories/staging/group_vars/all.yml
Normal file
1
inventories/staging/group_vars/all.yml
Normal file
@ -0,0 +1 @@
|
||||
domain: lab.cazzzer.com
|
@ -1,8 +1,6 @@
|
||||
# Environment specific variables (staging)
|
||||
|
||||
---
|
||||
domain: lab.cazzzer.com
|
||||
|
||||
docker_ipv6_index: 254
|
||||
|
||||
# Arrstack VPN
|
||||
@ -11,16 +9,6 @@ wg_psk: "{{ vault_wg_psk }}"
|
||||
wg_addresses: "{{ vault_wg_addresses }}"
|
||||
fw_vpn_input_ports: "{{ vault_fw_vpn_input_ports }}"
|
||||
|
||||
# Authentik External OAuth
|
||||
# Authentik GitHub OAuth
|
||||
github_consumer_key: dbacb8621c37320eb745
|
||||
github_consumer_secret: "{{ vault_github_consumer_secret }}"
|
||||
google_consumer_key: 606830535764-pec4b3sa2tohim3u9jl2jmnl1see46q1.apps.googleusercontent.com
|
||||
google_consumer_secret: "{{ vault_google_consumer_secret }}"
|
||||
|
||||
# VPGen
|
||||
vpgen_ipv4_starting_addr: 10.18.11.50
|
||||
vpgen_ipv6_starting_addr: "{{ vault_vpgen_ipv6_starting_addr }}"
|
||||
|
||||
# Woodpecker
|
||||
woodpecker_gitea_client_id: c7122416-b160-498b-8021-8f2837552588
|
||||
woodpecker_gitea_client_secret: "{{ vault_woodpecker_gitea_client_secret }}"
|
||||
|
@ -1,32 +1,21 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
36343339366166383430383235626463376339653331333635623936653135633633353064613634
|
||||
3263306161376232356634363532653266366665333364650a636365393465383165306563346132
|
||||
37653564633630653635353464333939353266396562316663653933373065353536333130383065
|
||||
3864353332303164320a316439313164663736636465366539643131303663343861333164613561
|
||||
37383965373964313535313335643164376164323263613539643933333035323837373662303030
|
||||
66636465303566313334386435326433653032383962353739643861346161323738636366396239
|
||||
39623336336234376339343562656362323932383265313161396435346530663330353266323433
|
||||
66396538313365653963323164306464663565303364386466666636346533633661333634313236
|
||||
33623936616239613264613730363039366561646535633239633564656166343162303633373366
|
||||
37656163333838656533363735383332626632353237613666396633363531666366336630613064
|
||||
66626561663766376531313666663963643766393965653564333062653139336230356330383464
|
||||
38343562383430303132663964303736623238386562323033623861303432363363373934643332
|
||||
63363239323664333131306237336134613137653136633932356238343733393632616464366134
|
||||
33623038363032653134626337663863366663383433633134326239616136656139366535613565
|
||||
61646330356330396236303566363834613236653733643162666536303435643133346633353632
|
||||
62386135303262353332643135636164303963616234626132356161663463366434323864626261
|
||||
33356536626263626261343937386666396561306334346435316262333431353234303836356563
|
||||
31343566373935396633636133616265346235396333396664333534336162323039623937656336
|
||||
36656133383966613333646336613039626563353862646238376461373264633233313836333062
|
||||
30343134363862626630393035643762376435346532306462363437646238333463396230666465
|
||||
64386365393063613139313164366562643066323461313364393265393638643137386561633530
|
||||
65643861386531323836306339386462656530383533363831323461303131396666626464303136
|
||||
64343865616235616366633136393662623862383961323338366435396334653538303830616166
|
||||
39636164613466313033643639366635323666666235653633333436613133343962353664313838
|
||||
64356466393239666131363964643461346633313030643061643938643232343334313731636463
|
||||
37396637643232353539626239306463623237623534366666396164613135356136313534663231
|
||||
36613662653237343061316463386231656136383636393034333666633063613731316162333464
|
||||
64313866633062623530326233633166343434636639346565346337396461393637383333366435
|
||||
62393030383963396638653230613431623837353461313630343333376131616239313164336234
|
||||
62323739316536353835613032303438623230626563303934626466303934613566656232323663
|
||||
643265386333313065333737613438316532
|
||||
63633535633462326534626562373461373363643166383961303861623531663263323534366537
|
||||
3263633238646439306430356365623233313838326639350a386633363434623737313565316535
|
||||
33393734633937333637373432366132323366343836393538366339626235613937323066613666
|
||||
3737393262646333390a623331333461373563313166323232343234616538623433376166313532
|
||||
32323834346336336164343938303062336438643566343866316164643535663039326331646465
|
||||
36666162393365323633646635333666613030386265306238633434303234336439646663356363
|
||||
63323638373035326465633934326363316364616539613462653232393465633233366666373664
|
||||
66616361646564303530356331323864343966633736643434653237316236363063613634646438
|
||||
35303238646632616465643264316164363139393834626362326538613033656464323435396638
|
||||
31346631653764303332386331663361623766333332366537313634636333346538653537346631
|
||||
62363438303036386530633236376633326162336434343861346261373835653735323161323965
|
||||
62353965373164616537346134303232363033323134323130316439386339613966646330666533
|
||||
65346239383230646565346133663530613462363532663562326136376233303638323332326630
|
||||
35656432363563653663616236393932663637323139666664636237336136366438656666633865
|
||||
66353162656364356638313236643131613830393838636264663833343461373963613431656364
|
||||
32303331623033303433333631313038316336653638656638373031653234356164333363336532
|
||||
37316334353463376562643138346633613633353536653939376564333166323931353634333736
|
||||
63616133663266383339323562343265613461623865623263623139396163343065623264366230
|
||||
32633362336335396562366563363830636133376238646433386236666461333731353337386333
|
||||
61323931643766326338
|
||||
|
@ -1,2 +1,2 @@
|
||||
[alpina]
|
||||
etappi.sys.cazzzer.com
|
||||
etappi.lab.home
|
||||
|
289
poetry.lock
generated
289
poetry.lock
generated
@ -1,30 +1,28 @@
|
||||
# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "ansible"
|
||||
version = "11.5.0"
|
||||
version = "10.5.0"
|
||||
description = "Radically simple IT automation"
|
||||
optional = false
|
||||
python-versions = ">=3.11"
|
||||
groups = ["main"]
|
||||
python-versions = ">=3.10"
|
||||
files = [
|
||||
{file = "ansible-11.5.0-py3-none-any.whl", hash = "sha256:d20bc30f44a35678ca5f05868084f2f52a8bb6f024e85dc80639f6ac4364cc61"},
|
||||
{file = "ansible-11.5.0.tar.gz", hash = "sha256:18a3fc73120a49ade9a9a67eb8f9d4f5009d2106c34ffeb9663ad928b76ed59b"},
|
||||
{file = "ansible-10.5.0-py3-none-any.whl", hash = "sha256:1d10bddba58f1edd0fe0b8e0387e0fafc519535066bb3c919c33b6ea3ec32a0f"},
|
||||
{file = "ansible-10.5.0.tar.gz", hash = "sha256:ba2045031a7d60c203b6e5fe1f8eaddd53ae076f7ada910e636494384135face"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
ansible-core = ">=2.18.5,<2.19.0"
|
||||
ansible-core = ">=2.17.5,<2.18.0"
|
||||
|
||||
[[package]]
|
||||
name = "ansible-core"
|
||||
version = "2.18.5"
|
||||
version = "2.17.5"
|
||||
description = "Radically simple IT automation"
|
||||
optional = false
|
||||
python-versions = ">=3.11"
|
||||
groups = ["main"]
|
||||
python-versions = ">=3.10"
|
||||
files = [
|
||||
{file = "ansible_core-2.18.5-py3-none-any.whl", hash = "sha256:4a1e75a24969d0a650d399bffbaf5a76d7c9b96a21a199a939fe836c3452718d"},
|
||||
{file = "ansible_core-2.18.5.tar.gz", hash = "sha256:319304d161770a8a891c07dec8a22c528548a948a7097eaf1a79939395105535"},
|
||||
{file = "ansible_core-2.17.5-py3-none-any.whl", hash = "sha256:10f165b475cf2bc8d886e532cadb32c52ee6a533649793101d3166bca9bd3ea3"},
|
||||
{file = "ansible_core-2.17.5.tar.gz", hash = "sha256:ae7f51fd13dc9d57c9bcd43ef23f9c255ca8f18f4b5c0011a4f9b724d92c5a8e"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -40,7 +38,6 @@ version = "2.1.0"
|
||||
description = "R/W an ansible-vault yaml file"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "ansible-vault-2.1.0.tar.gz", hash = "sha256:5ce8fdb5470f1449b76bf07ae2abc56480dad48356ae405c85b686efb64dbd5e"},
|
||||
]
|
||||
@ -50,28 +47,27 @@ ansible = "*"
|
||||
setuptools = "*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["black ; python_version >= \"3.6\"", "flake8 ; python_version >= \"3.6\"", "isort[pyproject] ; python_version >= \"3.6\"", "pytest"]
|
||||
dev = ["black", "flake8", "isort[pyproject]", "pytest"]
|
||||
release = ["twine"]
|
||||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "25.1.0"
|
||||
version = "24.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["dev"]
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"},
|
||||
{file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"},
|
||||
{file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"},
|
||||
{file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"]
|
||||
cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"]
|
||||
dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"]
|
||||
benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"]
|
||||
tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""]
|
||||
tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"]
|
||||
|
||||
[[package]]
|
||||
name = "cffi"
|
||||
@ -79,8 +75,6 @@ version = "1.17.1"
|
||||
description = "Foreign Function Interface for Python calling C code."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
markers = "platform_python_implementation != \"PyPy\""
|
||||
files = [
|
||||
{file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"},
|
||||
@ -156,56 +150,51 @@ pycparser = "*"
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "44.0.1"
|
||||
version = "43.0.1"
|
||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
optional = false
|
||||
python-versions = "!=3.9.0,!=3.9.1,>=3.7"
|
||||
groups = ["main"]
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "cryptography-44.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf688f615c29bfe9dfc44312ca470989279f0e94bb9f631f85e3459af8efc009"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd7c7e2d71d908dc0f8d2027e1604102140d84b155e658c20e8ad1304317691f"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887143b9ff6bad2b7570da75a7fe8bbf5f65276365ac259a5d2d5147a73775f2"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:322eb03ecc62784536bc173f1483e76747aafeb69c8728df48537eb431cd1911"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:21377472ca4ada2906bc313168c9dc7b1d7ca417b63c1c3011d0c74b7de9ae69"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df978682c1504fc93b3209de21aeabf2375cb1571d4e61907b3e7a2540e83026"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:eb3889330f2a4a148abead555399ec9a32b13b7c8ba969b72d8e500eb7ef84cd"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:8e6a85a93d0642bd774460a86513c5d9d80b5c002ca9693e63f6e540f1815ed0"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6f76fdd6fd048576a04c5210d53aa04ca34d2ed63336d4abd306d0cbe298fddf"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6c8acf6f3d1f47acb2248ec3ea261171a671f3d9428e34ad0357148d492c7864"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-win32.whl", hash = "sha256:24979e9f2040c953a94bf3c6782e67795a4c260734e5264dceea65c8f4bae64a"},
|
||||
{file = "cryptography-44.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:fd0ee90072861e276b0ff08bd627abec29e32a53b2be44e41dbcdf87cbee2b00"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8272f257cf1cbd3f2e120f14c68bff2b6bdfcc157fafdee84a1b795efd72862"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e8d181e90a777b63f3f0caa836844a1182f1f265687fac2115fcf245f5fbec3"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:436df4f203482f41aad60ed1813811ac4ab102765ecae7a2bbb1dbb66dcff5a7"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4f422e8c6a28cf8b7f883eb790695d6d45b0c385a2583073f3cec434cc705e1a"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:72198e2b5925155497a5a3e8c216c7fb3e64c16ccee11f0e7da272fa93b35c4c"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a46a89ad3e6176223b632056f321bc7de36b9f9b93b2cc1cccf935a3849dc62"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:53f23339864b617a3dfc2b0ac8d5c432625c80014c25caac9082314e9de56f41"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:888fcc3fce0c888785a4876ca55f9f43787f4c5c1cc1e2e0da71ad481ff82c5b"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00918d859aa4e57db8299607086f793fa7813ae2ff5a4637e318a25ef82730f7"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-win32.whl", hash = "sha256:9b336599e2cb77b1008cb2ac264b290803ec5e8e89d618a5e978ff5eb6f715d9"},
|
||||
{file = "cryptography-44.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1f9a92144fa0c877117e9748c74501bea842f93d21ee00b0cf922846d9d0b183"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:610a83540765a8d8ce0f351ce42e26e53e1f774a6efb71eb1b41eb01d01c3d12"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fed5cd6102bb4eb843e3315d2bf25fede494509bddadb81e03a859c1bc17b83"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:f4daefc971c2d1f82f03097dc6f216744a6cd2ac0f04c68fb935ea2ba2a0d420"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94f99f2b943b354a5b6307d7e8d19f5c423a794462bde2bf310c770ba052b1c4"},
|
||||
{file = "cryptography-44.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d9c5b9f698a83c8bd71e0f4d3f9f839ef244798e5ffe96febfa9714717db7af7"},
|
||||
{file = "cryptography-44.0.1.tar.gz", hash = "sha256:f51f5705ab27898afda1aaa430f34ad90dc117421057782022edf0600bec5f14"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-win32.whl", hash = "sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2"},
|
||||
{file = "cryptography-43.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-win32.whl", hash = "sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47"},
|
||||
{file = "cryptography-43.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb"},
|
||||
{file = "cryptography-43.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034"},
|
||||
{file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d"},
|
||||
{file = "cryptography-43.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289"},
|
||||
{file = "cryptography-43.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84"},
|
||||
{file = "cryptography-43.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365"},
|
||||
{file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96"},
|
||||
{file = "cryptography-43.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172"},
|
||||
{file = "cryptography-43.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2"},
|
||||
{file = "cryptography-43.0.1.tar.gz", hash = "sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""}
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0) ; python_version >= \"3.8\""]
|
||||
docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"]
|
||||
nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2) ; python_version >= \"3.8\""]
|
||||
pep8test = ["check-sdist ; python_version >= \"3.8\"", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"]
|
||||
sdist = ["build (>=1.0.0)"]
|
||||
docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
|
||||
docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"]
|
||||
nox = ["nox"]
|
||||
pep8test = ["check-sdist", "click", "mypy", "ruff"]
|
||||
sdist = ["build"]
|
||||
ssh = ["bcrypt (>=3.1.5)"]
|
||||
test = ["certifi (>=2024)", "cryptography-vectors (==44.0.1)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
|
||||
test = ["certifi", "cryptography-vectors (==43.0.1)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"]
|
||||
test-randomorder = ["pytest-randomly"]
|
||||
|
||||
[[package]]
|
||||
@ -214,7 +203,6 @@ version = "0.7.1"
|
||||
description = "Library for building Grafana dashboards"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "grafanalib-0.7.1-py3-none-any.whl", hash = "sha256:6fab5d7b837a1f2d1322ef762cd52e565ec0422707a7512765c59f668bdceb58"},
|
||||
{file = "grafanalib-0.7.1.tar.gz", hash = "sha256:3d92bb4e92ae78fe4e21c5b252ab51f4fdcacd8523ba5a44545b897b2a375b83"},
|
||||
@ -228,14 +216,13 @@ dev = ["flake8", "pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "jinja2"
|
||||
version = "3.1.5"
|
||||
version = "3.1.4"
|
||||
description = "A very fast and expressive template engine."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
|
||||
{file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
|
||||
{file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
|
||||
{file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -246,73 +233,72 @@ i18n = ["Babel (>=2.7)"]
|
||||
|
||||
[[package]]
|
||||
name = "markupsafe"
|
||||
version = "3.0.2"
|
||||
version = "3.0.1"
|
||||
description = "Safely add untrusted strings to HTML/XML markup."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"},
|
||||
{file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"},
|
||||
{file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"},
|
||||
{file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"},
|
||||
{file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"},
|
||||
{file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"},
|
||||
{file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-win32.whl", hash = "sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97"},
|
||||
{file = "MarkupSafe-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-win32.whl", hash = "sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635"},
|
||||
{file = "MarkupSafe-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-win32.whl", hash = "sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa"},
|
||||
{file = "MarkupSafe-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-win32.whl", hash = "sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-win32.whl", hash = "sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b"},
|
||||
{file = "MarkupSafe-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-win32.whl", hash = "sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8"},
|
||||
{file = "MarkupSafe-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b"},
|
||||
{file = "markupsafe-3.0.1.tar.gz", hash = "sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -321,7 +307,6 @@ version = "1.3.0"
|
||||
description = "A network address manipulation library for Python"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe"},
|
||||
{file = "netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a"},
|
||||
@ -332,14 +317,13 @@ nicer-shell = ["ipython"]
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "24.2"
|
||||
version = "24.1"
|
||||
description = "Core utilities for Python packages"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
|
||||
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
||||
{file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
|
||||
{file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -348,8 +332,6 @@ version = "2.22"
|
||||
description = "C parser in Python"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
markers = "platform_python_implementation != \"PyPy\""
|
||||
files = [
|
||||
{file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"},
|
||||
{file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"},
|
||||
@ -361,7 +343,6 @@ version = "6.0.2"
|
||||
description = "YAML parser and emitter for Python"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
|
||||
{file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
|
||||
@ -424,7 +405,6 @@ version = "1.0.1"
|
||||
description = "Resolve abstract dependencies into concrete ones"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "resolvelib-1.0.1-py2.py3-none-any.whl", hash = "sha256:d2da45d1a8dfee81bdd591647783e340ef3bcb104b54c383f70d422ef5cc7dbf"},
|
||||
{file = "resolvelib-1.0.1.tar.gz", hash = "sha256:04ce76cbd63fded2078ce224785da6ecd42b9564b1390793f64ddecbe997b309"},
|
||||
@ -438,26 +418,25 @@ test = ["commentjson", "packaging", "pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "75.8.1"
|
||||
version = "75.1.0"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "setuptools-75.8.1-py3-none-any.whl", hash = "sha256:3bc32c0b84c643299ca94e77f834730f126efd621de0cc1de64119e0e17dab1f"},
|
||||
{file = "setuptools-75.8.1.tar.gz", hash = "sha256:65fb779a8f28895242923582eadca2337285f0891c2c9e160754df917c3d2530"},
|
||||
{file = "setuptools-75.1.0-py3-none-any.whl", hash = "sha256:35ab7fd3bcd95e6b7fd704e4a1539513edad446c097797f2985e0e4b960772f2"},
|
||||
{file = "setuptools-75.1.0.tar.gz", hash = "sha256:d59a21b17a275fb872a9c3dae73963160ae079f1049ed956880cd7c09b120538"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""]
|
||||
core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"]
|
||||
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"]
|
||||
core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
|
||||
cover = ["pytest-cov"]
|
||||
doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
|
||||
enabler = ["pytest-enabler (>=2.2)"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"]
|
||||
test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
|
||||
type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "aee53e668f5f3a99526ea72999ad57256351453f5331f71c0abf94b5bd74a0c3"
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "334448cb0c7d192f0e10987a995ecefca5e136733cce4dd15dcc2238f1c371c8"
|
||||
|
@ -6,12 +6,12 @@ authors = ["Iurii Tatishchev <itatishch@gmail.com>"]
|
||||
readme = "README.md"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.11"
|
||||
ansible = "^11.1.0"
|
||||
python = "^3.10"
|
||||
ansible = "^10.1.0"
|
||||
ansible-vault = "^2.1.0"
|
||||
netaddr = "^1.3.0"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
[tool.poetry.dev-dependencies]
|
||||
grafanalib = "^0.7.1"
|
||||
|
||||
|
||||
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:recommended"
|
||||
],
|
||||
"docker-compose": {
|
||||
"fileMatch": [
|
||||
"(^|/)(?:docker-)?compose[^/]*\\.ya?ml(\\.j2)?$"
|
||||
]
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
path: "{{ current_stack_dest }}/{{ item.path }}"
|
||||
state: directory
|
||||
mode: "755"
|
||||
loop: "{{ query('community.general.filetree', current_stack_source) }}"
|
||||
loop: "{{ lookup('community.general.filetree', current_stack_source) }}"
|
||||
when: item.state == "directory"
|
||||
|
||||
- name: Generate {{ current_stack_name }} deployment from templates
|
||||
@ -19,7 +19,7 @@
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ current_stack_dest }}/{{ item.path | regex_replace('\\.j2$', '') }}"
|
||||
mode: "644"
|
||||
loop: "{{ query('community.general.filetree', current_stack_source) }}"
|
||||
loop: "{{ lookup('community.general.filetree', current_stack_source) }}"
|
||||
when: item.state == "file" and item.path | regex_search('\\.j2$')
|
||||
|
||||
- name: Generate {{ current_stack_name }} deployment from static files
|
||||
@ -27,7 +27,7 @@
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ current_stack_dest }}/{{ item.path }}"
|
||||
mode: "644"
|
||||
loop: "{{ query('community.general.filetree', current_stack_source) }}"
|
||||
loop: "{{ lookup('community.general.filetree', current_stack_source) }}"
|
||||
when: item.state == "file" and not item.path | regex_search('\\.j2$')
|
||||
|
||||
- name: Deploy docker-compose for {{ current_stack_name }}
|
||||
|
@ -28,11 +28,7 @@
|
||||
collection: apps
|
||||
stacks:
|
||||
- gitea
|
||||
- woodpecker
|
||||
- syncthing
|
||||
- nextcloud
|
||||
- jellyfin
|
||||
- arrstack
|
||||
- vpgen
|
||||
- pgrok
|
||||
import_tasks: deploy_collection.yml
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(249) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
gluetun:
|
||||
@ -9,13 +11,14 @@ services:
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0
|
||||
env_file:
|
||||
- .env.gluetun
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/arrstack/gluetun:/gluetun
|
||||
|
||||
@ -46,6 +49,9 @@ services:
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- qbittorrent
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/arrstack/config/prowlarr:/config
|
||||
|
||||
@ -57,6 +63,9 @@ services:
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- qbittorrent
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/arrstack/config/sonarr:/config
|
||||
- {{ base_volume_path }}/arrstack/downloads:/downloads
|
||||
@ -70,6 +79,9 @@ services:
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- qbittorrent
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/arrstack/config/radarr:/config
|
||||
- {{ base_volume_path }}/arrstack/downloads:/downloads
|
@ -25,7 +25,5 @@ GITEA__security__INTERNAL_TOKEN={{ internal_token }}
|
||||
|
||||
GITEA__oauth2__JWT_SECRET={{ jwt_secret }}
|
||||
|
||||
GITEA__webhook__ALLOWED_HOST_LIST="external,woodpecker.{{ domain }}"
|
||||
|
||||
# Indexer
|
||||
GITEA__indexer__REPO_INDEXER_ENABLED=true
|
||||
|
@ -2,16 +2,21 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(199) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
server:
|
||||
image: gitea/gitea
|
||||
image: gitea/gitea:1.22
|
||||
container_name: gitea_server
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('gitea', port='3000') | indent(6) }}
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.gitea
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/gitea/gitea:/data
|
||||
depends_on:
|
||||
@ -22,5 +27,7 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.db
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- {{ base_volume_path }}/gitea/postgres:/var/lib/postgresql/data
|
@ -2,6 +2,8 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(197) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
jellyfin:
|
||||
@ -12,6 +14,9 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.jellyfin
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/jellyfin/config:/config
|
||||
- {{ base_volume_path }}/jellyfin/cache:/cache
|
1
roles/alpina/templates/apps/nextcloud/.env.j2
Normal file
1
roles/alpina/templates/apps/nextcloud/.env.j2
Normal file
@ -0,0 +1 @@
|
||||
NEXTCLOUD_VERSION=30-apache
|
@ -2,10 +2,13 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(198) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
|
||||
services:
|
||||
app:
|
||||
image: &nextcloud_image nextcloud:stable-apache
|
||||
image: nextcloud:${NEXTCLOUD_VERSION}
|
||||
container_name: nextcloud_app
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('nc', port='80') | indent(6) }}
|
||||
@ -15,28 +18,40 @@ services:
|
||||
- redis
|
||||
env_file:
|
||||
- .env.nextcloud
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud:/var/www/html
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud_config:/var/www/html/config
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud_data:/var/www/html/data
|
||||
|
||||
cron:
|
||||
image: *nextcloud_image
|
||||
image: nextcloud:${NEXTCLOUD_VERSION}
|
||||
container_name: nextcloud_cron
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- app
|
||||
entrypoint: /cron.sh
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud:/var/www/html
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud_config:/var/www/html/config
|
||||
- {{ base_volume_path }}/nextcloud/nextcloud_data:/var/www/html/data
|
||||
|
||||
notify_push:
|
||||
image: *nextcloud_image
|
||||
image: nextcloud:${NEXTCLOUD_VERSION}
|
||||
container_name: nextcloud_notify_push
|
||||
{# TODO: Refactor this and minio -#}
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('nc', port='7867', path_prefix='/push') | indent(6) }}
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.nc-notify.rule=Host(`nc.{{ domain }}`) && PathPrefix(`/push`)
|
||||
- traefik.http.routers.nc-notify.entrypoints=websecure
|
||||
- traefik.http.routers.nc-notify.tls=true
|
||||
- traefik.http.routers.nc-notify.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.nc-notify.tls.domains.0.main={{ domain }}
|
||||
- traefik.http.routers.nc-notify.tls.domains.0.sans=*.{{ domain }}
|
||||
- traefik.http.services.nc-notify.loadbalancer.server.port=7867
|
||||
restart: unless-stopped
|
||||
user: www-data
|
||||
env_file:
|
||||
@ -53,6 +68,8 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.db
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- {{ base_volume_path }}/nextcloud/db:/var/lib/postgresql/data
|
||||
|
||||
@ -62,6 +79,8 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.redis
|
||||
networks:
|
||||
- default
|
||||
command:
|
||||
- sh
|
||||
- -c
|
@ -1,31 +0,0 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(194) | indent(2) }}
|
||||
|
||||
# https://github.com/pgrok/pgrok/blob/main/docs/admin/docker.md#docker-compose
|
||||
services:
|
||||
server:
|
||||
image: ghcr.io/pgrok/pgrokd:latest
|
||||
container_name: pgrok_server
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('pgrok', port='3320') | indent(6) }}
|
||||
- {{ helpers.traefik_labels('pgrok', port='3000', wildcard=true) | indent(6) }}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./pgrokd.yml:/var/opt/pgrokd/pgrokd.yml
|
||||
ports:
|
||||
- "2222:2222"
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
db:
|
||||
image: postgres:17-alpine
|
||||
container_name: pgrok_db
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- {{ base_volume_path }}/pgrok/postgres:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRES_DB: pgrok
|
||||
POSTGRES_USER: pgrok
|
||||
POSTGRES_PASSWORD: "{{ pgrok_db_password }}"
|
@ -1,29 +0,0 @@
|
||||
external_url: "https://pgrok.{{ domain }}"
|
||||
web:
|
||||
port: 3320
|
||||
proxy:
|
||||
port: 3000
|
||||
scheme: https
|
||||
domain: "pgrok.{{ domain }}"
|
||||
sshd:
|
||||
port: 2222
|
||||
|
||||
database:
|
||||
host: db
|
||||
port: 5432
|
||||
user: pgrok
|
||||
password: "{{ pgrok_db_password }}"
|
||||
database: pgrok
|
||||
|
||||
identity_provider:
|
||||
type: oidc
|
||||
display_name: Authentik
|
||||
issuer: "https://auth.{{ domain }}/application/o/pgrok/"
|
||||
client_id: "pgrok"
|
||||
client_secret: "{{ auth_pgrok_client_secret }}"
|
||||
field_mapping:
|
||||
identifier: "preferred_username"
|
||||
display_name: "name"
|
||||
email: "email"
|
||||
# # The required domain name, "field_mapping.email" is required to set for this to work.
|
||||
# required_domain: "example.com"
|
@ -1,16 +0,0 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(193) | indent(2) }}
|
||||
|
||||
services:
|
||||
syncthing:
|
||||
image: linuxserver/syncthing
|
||||
container_name: syncthing
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('sync', port='8384', auth=true) | indent(6) }}
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
volumes:
|
||||
- {{ base_volume_path }}/syncthing/config:/config
|
||||
- {{ base_volume_path }}/syncthing/data:/data
|
@ -1,29 +0,0 @@
|
||||
DATABASE_URL=file:/data/vpgen.db
|
||||
|
||||
PUBLIC_AUTH_AUTHENTIK_ENABLE=1
|
||||
AUTH_AUTHENTIK_REQUIRE_INVITE=0
|
||||
AUTH_AUTHENTIK_DOMAIN="auth.{{ domain }}"
|
||||
AUTH_AUTHENTIK_CLIENT_ID=vpgen
|
||||
AUTH_AUTHENTIK_CLIENT_SECRET="{{ auth_vpgen_client_secret }}"
|
||||
|
||||
PUBLIC_AUTH_GOOGLE_ENABLE=1
|
||||
AUTH_GOOGLE_REQUIRE_INVITE=1
|
||||
AUTH_GOOGLE_CLIENT_ID="{{ google_consumer_key }}"
|
||||
AUTH_GOOGLE_CLIENT_SECRET="{{ google_consumer_secret }}"
|
||||
|
||||
AUTH_INVITE_TOKEN="{{ vpgen_auth_invite_token }}"
|
||||
|
||||
OPNSENSE_API_URL={{ vpgen_opnsense_api_url }}
|
||||
OPNSENSE_API_KEY={{ vpgen_opnsense_api_key }}
|
||||
OPNSENSE_API_SECRET={{ vpgen_opnsense_api_secret }}
|
||||
OPNSENSE_WG_IFNAME={{ vpgen_opnsense_wg_ifname }}
|
||||
|
||||
IPV4_STARTING_ADDR={{ vpgen_ipv4_starting_addr }}
|
||||
IPV6_STARTING_ADDR={{ vpgen_ipv6_starting_addr }}
|
||||
IPV6_CLIENT_PREFIX_SIZE={{ vpgen_ipv6_client_prefix_size }}
|
||||
IP_MAX_INDEX={{ vpgen_ip_max_index }}
|
||||
VPN_ENDPOINT={{ vpgen_vpn_endpoint }}
|
||||
VPN_DNS={{ vpgen_vpn_dns }}
|
||||
MAX_CLIENTS_PER_USER={{ vpgen_max_clients_per_user }}
|
||||
|
||||
ORIGIN=https://vpgen.{{ domain }}
|
@ -1,16 +0,0 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(196) | indent(2) }}
|
||||
|
||||
services:
|
||||
vpgen:
|
||||
image: gitea.cazzzer.com/cazzzer/vpgen:develop
|
||||
container_name: vpgen
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('vpgen', port='3000') | indent(6) }}
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.vpgen
|
||||
volumes:
|
||||
- {{ base_volume_path }}/vpgen:/data
|
@ -1,35 +0,0 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(195) | indent(2) }}
|
||||
|
||||
services:
|
||||
woodpecker-server:
|
||||
image: woodpeckerci/woodpecker-server:v3
|
||||
container_name: woodpecker_server
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('woodpecker', port='8000') | indent(6) }}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- {{ base_volume_path }}/woodpecker/data:/var/lib/woodpecker
|
||||
environment:
|
||||
- WOODPECKER_OPEN=true
|
||||
- WOODPECKER_HOST=https://woodpecker.{{ domain }}
|
||||
- WOODPECKER_GITEA=true
|
||||
- WOODPECKER_GITEA_URL=https://gitea.{{ domain }}
|
||||
- WOODPECKER_GITEA_CLIENT={{ woodpecker_gitea_client_id }}
|
||||
- WOODPECKER_GITEA_SECRET={{ woodpecker_gitea_client_secret }}
|
||||
- WOODPECKER_AGENT_SECRET={{ woodpecker_agent_secret }}
|
||||
|
||||
woodpecker-agent:
|
||||
image: woodpeckerci/woodpecker-agent:v3
|
||||
container_name: woodpecker_agent
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- woodpecker-server
|
||||
volumes:
|
||||
- {{ base_volume_path }}/woodpecker/agent_config:/etc/woodpecker
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- WOODPECKER_SERVER=woodpecker-server:9000
|
||||
- WOODPECKER_AGENT_SECRET={{ woodpecker_agent_secret }}
|
@ -1,225 +0,0 @@
|
||||
version: 1
|
||||
metadata:
|
||||
labels:
|
||||
blueprints.goauthentik.io/instantiate: "true"
|
||||
name: Alpina - Enrollment by Invitation (Internal)
|
||||
entries:
|
||||
# Flow for internal enrollment by invitation
|
||||
- identifiers:
|
||||
slug: enrollment-internal-invitation-flow
|
||||
model: authentik_flows.flow
|
||||
id: flow
|
||||
attrs:
|
||||
name: Alpina Enrollment Flow
|
||||
title: Sign Up
|
||||
designation: enrollment
|
||||
authentication: require_unauthenticated
|
||||
|
||||
# Prompt fields
|
||||
- identifiers:
|
||||
name: alpina-enrollment-field-name
|
||||
model: authentik_stages_prompt.prompt
|
||||
id: prompt-field-name
|
||||
attrs:
|
||||
field_key: name
|
||||
label: Name
|
||||
type: text
|
||||
required: true
|
||||
placeholder: Name
|
||||
placeholder_expression: false
|
||||
order: 0
|
||||
- identifiers:
|
||||
name: alpina-enrollment-field-password
|
||||
model: authentik_stages_prompt.prompt
|
||||
id: prompt-field-password
|
||||
attrs:
|
||||
field_key: password
|
||||
label: Password
|
||||
type: password
|
||||
required: true
|
||||
placeholder: Password
|
||||
placeholder_expression: false
|
||||
order: 1
|
||||
- identifiers:
|
||||
name: alpina-enrollment-field-password-repeat
|
||||
model: authentik_stages_prompt.prompt
|
||||
id: prompt-field-password-repeat
|
||||
attrs:
|
||||
field_key: password_repeat
|
||||
label: Password (repeat)
|
||||
type: password
|
||||
required: true
|
||||
placeholder: Password (repeat)
|
||||
placeholder_expression: false
|
||||
order: 2
|
||||
|
||||
# Flow stages
|
||||
- identifiers:
|
||||
name: alpina-enrollment-invitation
|
||||
model: authentik_stages_invitation.invitationstage
|
||||
id: enrollment-invitation
|
||||
- identifiers:
|
||||
name: alpina-enrollment-identification-oauth
|
||||
model: authentik_stages_identification.identificationstage
|
||||
id: enrollment-identification-oauth
|
||||
attrs:
|
||||
user_fields:
|
||||
- email
|
||||
pretend_user_exists: true
|
||||
show_matched_user: false
|
||||
sources:
|
||||
- !Find [authentik_sources_oauth.oauthsource, [slug, github-enrollment]]
|
||||
- !Find [authentik_sources_oauth.oauthsource, [slug, google-enrollment]]
|
||||
- identifiers:
|
||||
name: alpina-enrollment-deny-existing-email
|
||||
model: authentik_stages_deny.denystage
|
||||
id: enrollment-deny-existing-email
|
||||
attrs:
|
||||
deny_message: "An account with this email already exists"
|
||||
- identifiers:
|
||||
name: alpina-enrollment-prompt-name-password
|
||||
model: authentik_stages_prompt.promptstage
|
||||
id: enrollment-prompt-name-password
|
||||
attrs:
|
||||
fields:
|
||||
- !KeyOf prompt-field-name
|
||||
- !KeyOf prompt-field-password
|
||||
- !KeyOf prompt-field-password-repeat
|
||||
validation_policies:
|
||||
- !Find [authentik_policies_password.passwordpolicy, [name, default-password-change-password-policy]]
|
||||
- identifiers:
|
||||
name: alpina-enrollment-user-write
|
||||
model: authentik_stages_user_write.userwritestage
|
||||
id: enrollment-user-write
|
||||
attrs:
|
||||
user_type: internal
|
||||
create_users_group: !Find [authentik_core.group, [name, {{ auth_default_enrollment_group }}]]
|
||||
- identifiers:
|
||||
name: alpina-enrollment-email-verify
|
||||
model: authentik_stages_email.emailstage
|
||||
id: enrollment-email-verify
|
||||
attrs:
|
||||
use_global_settings: true
|
||||
template: email/account_confirmation.html
|
||||
activate_user_on_success: true
|
||||
- identifiers:
|
||||
name: alpina-enrollment-user-login
|
||||
model: authentik_stages_user_login.userloginstage
|
||||
id: enrollment-user-login
|
||||
|
||||
# Policies
|
||||
- identifiers:
|
||||
name: alpina-enrollment-invited-used-policy
|
||||
model: authentik_policies_event_matcher.eventmatcherpolicy
|
||||
id: enrollment-invited-used-policy
|
||||
attrs:
|
||||
action: invitation_used
|
||||
- identifiers:
|
||||
name: alpina-enrollment-unique-email-policy
|
||||
model: authentik_policies_expression.expressionpolicy
|
||||
id: enrollment-unique-email-policy
|
||||
attrs:
|
||||
expression: |
|
||||
# https://docs.goauthentik.io/docs/customize/policies/expression/unique_email
|
||||
from authentik.core.models import User
|
||||
email = request.context["flow_plan"].context["pending_user"].email
|
||||
|
||||
if User.objects.filter(email=email).exists():
|
||||
ak_message("Email address in use")
|
||||
return False
|
||||
|
||||
if request.context["flow_plan"].context.get("prompt_data") is None:
|
||||
request.context["flow_plan"].context["prompt_data"] = {}
|
||||
|
||||
request.context["flow_plan"].context["prompt_data"]["email"] = email
|
||||
request.context["flow_plan"].context["prompt_data"]["username"] = email
|
||||
return True
|
||||
|
||||
- identifiers:
|
||||
name: alpina-enrollment-user-write-add-groups-policy
|
||||
model: authentik_policies_expression.expressionpolicy
|
||||
id: enrollment-user-write-add-groups-policy
|
||||
attrs:
|
||||
expression: |
|
||||
# https://docs.goauthentik.io/docs/add-secure-apps/flows-stages/stages/user_write
|
||||
from authentik.core.models import Group
|
||||
ak_logger.info("Adding groups", request=request, prompt_data=request.context["prompt_data"], invitation=request.context.get("invitation"))
|
||||
|
||||
requested_groups = request.context["prompt_data"].get("alpina_add_groups")
|
||||
if requested_groups is None:
|
||||
return True
|
||||
|
||||
groups = []
|
||||
for group_name in requested_groups:
|
||||
group, _ = Group.objects.get_or_create(name=group_name)
|
||||
groups.append(group)
|
||||
|
||||
# ["groups"] *must* be set to an array of Group objects, names alone are not enough.
|
||||
request.context["flow_plan"].context["groups"] = groups
|
||||
return True
|
||||
|
||||
# Flow stage bindings
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-invitation
|
||||
order: 0
|
||||
model: authentik_flows.flowstagebinding
|
||||
id: enrollment-invitation-binding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-identification-oauth
|
||||
order: 1
|
||||
model: authentik_flows.flowstagebinding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-deny-existing-email
|
||||
order: 2
|
||||
model: authentik_flows.flowstagebinding
|
||||
id: enrollment-deny-existing-email-binding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-prompt-name-password
|
||||
order: 10
|
||||
model: authentik_flows.flowstagebinding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-user-write
|
||||
order: 20
|
||||
model: authentik_flows.flowstagebinding
|
||||
id: enrollment-user-write-binding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-email-verify
|
||||
order: 30
|
||||
model: authentik_flows.flowstagebinding
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf enrollment-user-login
|
||||
order: 100
|
||||
model: authentik_flows.flowstagebinding
|
||||
|
||||
# Stage policy bindings
|
||||
# Log used invitations
|
||||
- identifiers:
|
||||
target: !KeyOf enrollment-invitation-binding
|
||||
policy: !KeyOf enrollment-invited-used-policy
|
||||
order: 0
|
||||
model: authentik_policies.policybinding
|
||||
attrs:
|
||||
negate: true
|
||||
# Deny existing email addresses
|
||||
- identifiers:
|
||||
target: !KeyOf enrollment-deny-existing-email-binding
|
||||
policy: !KeyOf enrollment-unique-email-policy
|
||||
order: 0
|
||||
model: authentik_policies.policybinding
|
||||
attrs:
|
||||
negate: true
|
||||
# Add groups to user from invitation "alpina_add_groups" field
|
||||
# This only work for email sign up, as the invitation flow context isn't
|
||||
# preserved for the default-source-enrollment flow
|
||||
- identifiers:
|
||||
target: !KeyOf enrollment-user-write-binding
|
||||
policy: !KeyOf enrollment-user-write-add-groups-policy
|
||||
order: 0
|
||||
model: authentik_policies.policybinding
|
@ -1,79 +0,0 @@
|
||||
version: 1
|
||||
metadata:
|
||||
labels:
|
||||
blueprints.goauthentik.io/instantiate: "true"
|
||||
name: Alpina - External OAuth
|
||||
entries:
|
||||
{% set sources = {
|
||||
"GitHub": {
|
||||
"provider_type": "github",
|
||||
"consumer_key": github_consumer_key,
|
||||
"consumer_secret": github_consumer_secret,
|
||||
},
|
||||
"Google": {
|
||||
"provider_type": "google",
|
||||
"consumer_key": google_consumer_key,
|
||||
"consumer_secret": google_consumer_secret,
|
||||
},
|
||||
} -%}
|
||||
{% for source in sources.keys() -%}
|
||||
- identifiers:
|
||||
slug: {{ source | lower }}-auth
|
||||
model: authentik_sources_oauth.oauthsource
|
||||
attrs:
|
||||
provider_type: {{ sources[source]["provider_type"] }}
|
||||
name: {{ source }} (Auth Only)
|
||||
consumer_key: {{ sources[source]["consumer_key"] }}
|
||||
consumer_secret: {{ sources[source]["consumer_secret"] }}
|
||||
user_matching_mode: email_link
|
||||
user_path_template: goauthentik.io/sources/%(slug)s
|
||||
authentication_flow: !Find [authentik_flows.flow, [slug, default-source-authentication]]
|
||||
- identifiers:
|
||||
slug: {{ source | lower }}-enrollment
|
||||
model: authentik_sources_oauth.oauthsource
|
||||
attrs:
|
||||
provider_type: {{ sources[source]["provider_type"] }}
|
||||
name: {{ source }} (Auth and Enrollment)
|
||||
consumer_key: {{ sources[source]["consumer_key"] }}
|
||||
consumer_secret: {{ sources[source]["consumer_secret"] }}
|
||||
user_matching_mode: email_link
|
||||
user_path_template: goauthentik.io/sources/%(slug)s
|
||||
authentication_flow: !Find [authentik_flows.flow, [slug, default-source-authentication]]
|
||||
enrollment_flow: !Find [authentik_flows.flow, [slug, default-source-enrollment]]
|
||||
{% endfor %}
|
||||
|
||||
# Modify default source enrollment to use email as username
|
||||
- identifiers:
|
||||
slug: default-source-enrollment
|
||||
model: authentik_flows.flow
|
||||
id: source-enrollment-flow
|
||||
attrs:
|
||||
policy_engine_mode: all
|
||||
- identifiers:
|
||||
name: alpina-email-as-username-policy
|
||||
model: authentik_policies_expression.expressionpolicy
|
||||
id: email-as-username-policy
|
||||
attrs:
|
||||
expression: |
|
||||
# https://docs.goauthentik.io/docs/users-sources/sources/social-logins/google/#username-mapping
|
||||
email = request.context["prompt_data"].get("email")
|
||||
# Direct set username to email
|
||||
request.context["prompt_data"]["username"] = email
|
||||
# Set username to email without domain
|
||||
# request.context["prompt_data"]["username"] = email.split("@")[0]
|
||||
return True
|
||||
- identifiers:
|
||||
policy: !KeyOf email-as-username-policy
|
||||
target: !KeyOf source-enrollment-flow
|
||||
model: authentik_policies.policybinding
|
||||
attrs:
|
||||
order: 0
|
||||
|
||||
# Modify default source enrollment to create internal users
|
||||
# with the internal user type and the users group
|
||||
- identifiers:
|
||||
name: default-source-enrollment-write
|
||||
model: authentik_stages_user_write.userwritestage
|
||||
attrs:
|
||||
user_type: internal
|
||||
create_users_group: !Find [authentik_core.group, [name, {{ auth_default_enrollment_group }}]]
|
@ -33,20 +33,6 @@ entries:
|
||||
"ui_group": "Apps",
|
||||
"allowed_for_groups": ["admins", "users"],
|
||||
},
|
||||
"VPGen": {
|
||||
"redirect_uri": "https://vpgen."~ domain ~"/auth/authentik/callback",
|
||||
"icon": "https://vpgen."~ domain ~"/favicon.png",
|
||||
"client_secret": auth_vpgen_client_secret,
|
||||
"ui_group": "Apps",
|
||||
"allowed_for_groups": ["admins", "users", "vpgen"],
|
||||
},
|
||||
"Pgrok": {
|
||||
"redirect_uri": "https://pgrok."~ domain ~"/-/oidc/callback",
|
||||
"icon": "https://pgrok."~ domain ~"/pgrok.svg",
|
||||
"client_secret": auth_pgrok_client_secret,
|
||||
"ui_group": "Apps",
|
||||
"allowed_for_groups": ["admins", "users"],
|
||||
},
|
||||
} -%}
|
||||
{% for app in apps.keys() -%}
|
||||
- identifiers:
|
||||
|
@ -13,13 +13,6 @@ entries:
|
||||
"ui_group": "Services",
|
||||
"allowed_for_groups": ["admins"],
|
||||
},
|
||||
"Syncthing": {
|
||||
"host": "sync",
|
||||
"icon": "https://sync."~ domain ~"/assets/img/favicon-default.png",
|
||||
"unauthenticated_paths": "^/assets/img/favicon-default.png$",
|
||||
"ui_group": "Apps",
|
||||
"allowed_for_groups": ["admins"],
|
||||
},
|
||||
"qBit": {
|
||||
"host": "qbit",
|
||||
"icon": "https://qbit."~ domain ~"/images/qbittorrent-tray.svg",
|
||||
|
@ -48,8 +48,7 @@ entries:
|
||||
passwordless_flow: !Find [authentik_flows.flow, [slug, authentication-passwordless-flow]]
|
||||
sources:
|
||||
- !Find [authentik_core.source, [slug, authentik-built-in]]
|
||||
- !Find [authentik_sources_oauth.oauthsource, [slug, github-auth]]
|
||||
- !Find [authentik_sources_oauth.oauthsource, [slug, google-auth]]
|
||||
- !Find [authentik_sources_oauth.oauthsource, [slug, github]]
|
||||
|
||||
# Enable compatibility mode for the default authentication flow for better autofill support
|
||||
- identifiers:
|
||||
|
@ -38,8 +38,3 @@ entries:
|
||||
return {
|
||||
"policy": policy,
|
||||
}
|
||||
|
||||
- identifiers:
|
||||
name: "vpgen"
|
||||
model: authentik_core.group
|
||||
id: "vpgen"
|
@ -0,0 +1,25 @@
|
||||
version: 1
|
||||
metadata:
|
||||
labels:
|
||||
blueprints.goauthentik.io/instantiate: "true"
|
||||
name: Alpina - GitHub OAuth
|
||||
entries:
|
||||
- identifiers:
|
||||
slug: github
|
||||
model: authentik_sources_oauth.oauthsource
|
||||
attrs:
|
||||
name: GitHub
|
||||
slug: github
|
||||
access_token_url: https://github.com/login/oauth/access_token
|
||||
additional_scopes: openid read:org
|
||||
authentication_flow: !Find [authentik_flows.flow, [slug, default-source-authentication]]
|
||||
authorization_url: https://github.com/login/oauth/authorize
|
||||
consumer_key: {{ github_consumer_key }}
|
||||
consumer_secret: {{ github_consumer_secret }}
|
||||
enabled: true
|
||||
enrollment_flow: !Find [authentik_flows.flow, [slug, default-source-enrollment]]
|
||||
policy_engine_mode: any
|
||||
profile_url: https://api.github.com/user
|
||||
provider_type: github
|
||||
user_matching_mode: email_link
|
||||
user_path_template: goauthentik.io/sources/%(slug)s
|
@ -2,6 +2,8 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(253) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
server:
|
||||
@ -15,11 +17,13 @@ services:
|
||||
restart: unless-stopped
|
||||
# Port forward is needed because traefik can't resolve the container name from the host network
|
||||
ports:
|
||||
- "127.0.0.1:9000:9000"
|
||||
- "[::1]:9000:9000"
|
||||
- "9000:9000"
|
||||
command: server
|
||||
env_file:
|
||||
- .env.authentik
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
|
||||
worker:
|
||||
image: ghcr.io/goauthentik/server:latest
|
@ -1,19 +0,0 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(252) | indent(2) }}
|
||||
|
||||
services:
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: minio
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('minio', port='9090') | indent(6) }}
|
||||
- {{ helpers.traefik_labels('s3', port='9000') | indent(6) }}
|
||||
- {{ helpers.traefik_labels('s3', port='9000', wildcard=true) | indent(6) }}
|
||||
restart: unless-stopped
|
||||
command: server --console-address ":9090" /data
|
||||
env_file:
|
||||
- .env.minio
|
||||
volumes:
|
||||
- {{ base_volume_path }}/minio/data:/data
|
32
roles/alpina/templates/services/minio/docker-compose.yml.j2
Normal file
32
roles/alpina/templates/services/minio/docker-compose.yml.j2
Normal file
@ -0,0 +1,32 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(252) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
container_name: minio
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('minio', port='9090') | indent(6) }}
|
||||
- traefik.http.routers.minio.service=minio
|
||||
- traefik.http.routers.minio-tls.service=minio
|
||||
- traefik.http.routers.minio-s3.rule=Host(`s3.{{ domain }}`) || HostRegexp(`^.+[.]s3[.]{{ domain }}`)
|
||||
- traefik.http.routers.minio-s3.entrypoints=websecure
|
||||
- traefik.http.routers.minio-s3.tls=true
|
||||
- traefik.http.routers.minio-s3.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.minio-s3.tls.domains.0.main=s3.{{ domain }}
|
||||
- traefik.http.routers.minio-s3.tls.domains.0.sans=*.s3.{{ domain }}
|
||||
- traefik.http.routers.minio-s3.service=minio-s3
|
||||
- traefik.http.services.minio-s3.loadbalancer.server.port=9000
|
||||
restart: unless-stopped
|
||||
command: server --console-address ":9090" /data
|
||||
env_file:
|
||||
- .env.minio
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/minio/data:/data
|
@ -2,6 +2,8 @@
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(251) | indent(2) }}
|
||||
traefik_traefik:
|
||||
external: true
|
||||
|
||||
services:
|
||||
grafana:
|
||||
@ -15,6 +17,9 @@ services:
|
||||
restart: unless-stopped
|
||||
# Needed to make config files readable (not anymore, TODO: remove)
|
||||
user: "{{ remote_uid }}"
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/monitoring/grafana:/var/lib/grafana
|
||||
- ./grafana_config/grafana.ini:/etc/grafana/grafana.ini:ro
|
||||
@ -22,7 +27,7 @@ services:
|
||||
{# - ./grafana_config:/etc/grafana:ro#}
|
||||
|
||||
loki:
|
||||
image: grafana/loki:3.5
|
||||
image: grafana/loki:latest
|
||||
container_name: loki
|
||||
restart: unless-stopped
|
||||
# Needed to make config files readable (not anymore, TODO: remove)
|
||||
@ -31,8 +36,7 @@ services:
|
||||
- -config.file=/etc/loki/loki-config.yaml
|
||||
# Port forward is needed because not possible to resolve the container name from the host network
|
||||
ports:
|
||||
- "127.0.0.1:3100:3100"
|
||||
- "[::1]:3100:3100"
|
||||
- 3100:3100
|
||||
volumes:
|
||||
- {{ base_volume_path }}/monitoring/loki:/loki
|
||||
- ./loki_config:/etc/loki:ro
|
||||
@ -40,7 +44,7 @@ services:
|
||||
- /tmp/loki
|
||||
|
||||
promtail:
|
||||
image: grafana/promtail:3.5
|
||||
image: grafana/promtail:latest
|
||||
container_name: promtail
|
||||
restart: unless-stopped
|
||||
command:
|
||||
@ -99,6 +103,9 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.influxdb
|
||||
networks:
|
||||
- default
|
||||
- traefik_traefik
|
||||
volumes:
|
||||
- {{ base_volume_path }}/monitoring/influxdb:/var/lib/influxdb2
|
||||
|
@ -1,81 +1,27 @@
|
||||
from attrs import define
|
||||
from grafanalib.core import Template, TimeSeries, Dashboard, HIDE_VARIABLE, Target
|
||||
from grafanalib.core import Template
|
||||
|
||||
CONF_SUPPORT_LOKI = True
|
||||
CONF_SUPPORT_ZFS = True
|
||||
# TODO: consider default params for common params like line width, show points, tooltip
|
||||
|
||||
CONF_DATASOURCE_VAR_PROM = 'prom_datasource'
|
||||
CONF_DATASOURCE_VAR_LOKI = 'loki_datasource'
|
||||
|
||||
prom_datasource = f'${{{CONF_DATASOURCE_VAR_PROM}}}'
|
||||
loki_datasource = f'${{{CONF_DATASOURCE_VAR_LOKI}}}'
|
||||
|
||||
prom_template = Template(
|
||||
name=CONF_DATASOURCE_VAR_PROM,
|
||||
PrometheusTemplate = Template(
|
||||
name='datasource',
|
||||
type='datasource',
|
||||
label='Prometheus',
|
||||
query='prometheus',
|
||||
hide=HIDE_VARIABLE,
|
||||
)
|
||||
|
||||
loki_template = Template(
|
||||
name=CONF_DATASOURCE_VAR_LOKI,
|
||||
type='datasource',
|
||||
label='Loki',
|
||||
query='loki',
|
||||
hide=HIDE_VARIABLE,
|
||||
)
|
||||
|
||||
|
||||
@define
|
||||
class MyDashboard(Dashboard):
|
||||
"""Wrapper class for Dashboard with some default values"""
|
||||
timezone: str = 'browser'
|
||||
sharedCrosshair: bool = True
|
||||
|
||||
|
||||
@define
|
||||
class MyTimeSeries(TimeSeries):
|
||||
"""Wrapper class for TimeSeries with some default values and custom fields"""
|
||||
fillOpacity: int = 10
|
||||
lineWidth: int = 1
|
||||
showPoints: str = 'never'
|
||||
tooltipMode: str = 'multi'
|
||||
maxDataPoints: int = None
|
||||
|
||||
# new fields
|
||||
axisCenteredZero: bool = False
|
||||
|
||||
def to_json_data(self):
|
||||
data = super().to_json_data()
|
||||
data['fieldConfig']['defaults']['custom']['axisCenteredZero'] = self.axisCenteredZero
|
||||
return data
|
||||
|
||||
|
||||
@define
|
||||
class PromTarget(Target):
|
||||
"""Wrapper class for Target with default prometheus datasource"""
|
||||
datasource: str = prom_datasource
|
||||
|
||||
|
||||
@define
|
||||
# TODO: this slightly less (clown emoji), normal Target gave me errors in grafana
|
||||
class LokiTarget(object):
|
||||
"""Custom class for Loki Target, because normal Target gave errors in grafana"""
|
||||
expr: str
|
||||
legendFormat: str
|
||||
datasource: str = loki_datasource
|
||||
refId: str = None
|
||||
queryType: str = 'range'
|
||||
def __init__(self, loki_datasource, expr, legendFormat, refId):
|
||||
self.loki_datasource = loki_datasource
|
||||
self.expr = expr
|
||||
self.legendFormat = legendFormat
|
||||
self.refId = refId
|
||||
|
||||
def to_json_data(self):
|
||||
return {
|
||||
'datasource': self.datasource,
|
||||
'datasource': self.loki_datasource,
|
||||
'expr': self.expr,
|
||||
'legendFormat': self.legendFormat,
|
||||
'refId': self.refId,
|
||||
'queryType': self.queryType,
|
||||
'queryType': 'range',
|
||||
}
|
||||
|
||||
|
||||
def filter_none(l: list):
|
||||
return [i for i in l if i is not None]
|
||||
|
@ -1,10 +1,16 @@
|
||||
from grafanalib.core import GridPos, Templating, Template, Logs
|
||||
from grafanalib.core import (
|
||||
Dashboard, TimeSeries,
|
||||
Target, GridPos,
|
||||
Templating, Template, REFRESH_ON_TIME_RANGE_CHANGE, Logs
|
||||
)
|
||||
from grafanalib.formatunits import BYTES_IEC, SECONDS, BYTES_SEC_IEC
|
||||
|
||||
from common import LokiTarget, prom_template, loki_template, MyTimeSeries, MyDashboard, CONF_SUPPORT_LOKI, filter_none, \
|
||||
prom_datasource, PromTarget
|
||||
from common import LokiTarget, PrometheusTemplate
|
||||
|
||||
dashboard = MyDashboard(
|
||||
prom_datasource='${datasource}'
|
||||
loki_datasource='loki'
|
||||
|
||||
dashboard = Dashboard(
|
||||
title='Containers',
|
||||
uid='containers',
|
||||
description='Data for compose projects from default Prometheus datasource collected by Cadvisor',
|
||||
@ -12,9 +18,8 @@ dashboard = MyDashboard(
|
||||
'linux',
|
||||
'docker',
|
||||
],
|
||||
templating=Templating(list=filter_none([
|
||||
prom_template,
|
||||
loki_template if CONF_SUPPORT_LOKI else None,
|
||||
templating=Templating(list=[
|
||||
PrometheusTemplate,
|
||||
Template(
|
||||
name='compose_project',
|
||||
label='Compose Project',
|
||||
@ -22,6 +27,7 @@ dashboard = MyDashboard(
|
||||
query='label_values({__name__=~"container.*"}, container_label_com_docker_compose_project)',
|
||||
includeAll=True,
|
||||
multi=True,
|
||||
refresh=REFRESH_ON_TIME_RANGE_CHANGE,
|
||||
),
|
||||
Template(
|
||||
name='container_name',
|
||||
@ -30,6 +36,7 @@ dashboard = MyDashboard(
|
||||
query='label_values({__name__=~"container.*", container_label_com_docker_compose_project=~"$compose_project"}, name)',
|
||||
includeAll=True,
|
||||
multi=True,
|
||||
refresh=REFRESH_ON_TIME_RANGE_CHANGE,
|
||||
),
|
||||
Template(
|
||||
name='logs_query',
|
||||
@ -37,48 +44,67 @@ dashboard = MyDashboard(
|
||||
query='',
|
||||
type='textbox',
|
||||
),
|
||||
])),
|
||||
panels=filter_none([
|
||||
MyTimeSeries(
|
||||
]),
|
||||
timezone='browser',
|
||||
panels=[
|
||||
TimeSeries(
|
||||
title='Container Memory Usage',
|
||||
unit=BYTES_IEC,
|
||||
gridPos=GridPos(h=8, w=12, x=0, y=0),
|
||||
tooltipSort='desc',
|
||||
lineWidth=2,
|
||||
fillOpacity=10,
|
||||
showPoints='never',
|
||||
stacking={'mode': 'normal'},
|
||||
tooltipMode='all',
|
||||
tooltipSort='desc',
|
||||
targets=[
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource=prom_datasource,
|
||||
expr='max by (name) (container_memory_usage_bytes{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"})',
|
||||
legendFormat='{{ name }}',
|
||||
refId='A',
|
||||
),
|
||||
],
|
||||
),
|
||||
MyTimeSeries(
|
||||
TimeSeries(
|
||||
title='Container CPU Usage',
|
||||
unit=SECONDS,
|
||||
gridPos=GridPos(h=8, w=12, x=12, y=0),
|
||||
lineWidth=2,
|
||||
fillOpacity=10,
|
||||
showPoints='never',
|
||||
tooltipMode='all',
|
||||
tooltipSort='desc',
|
||||
stacking={'mode': 'normal'},
|
||||
targets=[
|
||||
PromTarget(
|
||||
expr='max by (name) (irate(container_cpu_usage_seconds_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
Target(
|
||||
datasource=prom_datasource,
|
||||
expr='max by (name) (rate(container_cpu_usage_seconds_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
legendFormat='{{ name }}',
|
||||
refId='A',
|
||||
),
|
||||
],
|
||||
),
|
||||
MyTimeSeries(
|
||||
TimeSeries(
|
||||
title='Container Network Traffic',
|
||||
unit=BYTES_SEC_IEC,
|
||||
gridPos=GridPos(h=8, w=12, x=0, y=8),
|
||||
lineWidth=2,
|
||||
fillOpacity=10,
|
||||
showPoints='never',
|
||||
tooltipMode='all',
|
||||
tooltipSort='desc',
|
||||
axisCenteredZero=True,
|
||||
targets=[
|
||||
PromTarget(
|
||||
expr='max by (name) (irate(container_network_receive_bytes_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
Target(
|
||||
datasource=prom_datasource,
|
||||
expr='max by (name) (rate(container_network_receive_bytes_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
legendFormat="rx {{ name }}",
|
||||
refId='A',
|
||||
),
|
||||
PromTarget(
|
||||
expr='-max by (name) (irate(container_network_transmit_bytes_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
Target(
|
||||
datasource=prom_datasource,
|
||||
expr='-max by (name) (rate(container_network_transmit_bytes_total{name=~"$container_name", container_label_com_docker_compose_project=~"$compose_project"}[$__rate_interval]))',
|
||||
legendFormat="tx {{ name }}",
|
||||
refId='B',
|
||||
),
|
||||
],
|
||||
),
|
||||
@ -92,10 +118,12 @@ dashboard = MyDashboard(
|
||||
dedupStrategy='numbers',
|
||||
targets=[
|
||||
LokiTarget(
|
||||
loki_datasource=loki_datasource,
|
||||
expr='{compose_project=~"$compose_project", container_name=~"$container_name"} |= `$logs_query`',
|
||||
legendFormat='{{ container_name }}',
|
||||
refId='A',
|
||||
),
|
||||
],
|
||||
) if CONF_SUPPORT_LOKI else None,
|
||||
]),
|
||||
),
|
||||
],
|
||||
).auto_panel_ids()
|
||||
|
@ -1,159 +1,139 @@
|
||||
from grafanalib.core import Templating, Template, GridPos
|
||||
from grafanalib.formatunits import BYTES_IEC, BITS_SEC, PERCENT_UNIT
|
||||
from grafanalib.core import Dashboard, Templating, Template, TimeSeries, PERCENT_UNIT_FORMAT, GridPos, Target
|
||||
from grafanalib.formatunits import BYTES_IEC
|
||||
|
||||
from common import prom_template, MyTimeSeries, MyDashboard, CONF_SUPPORT_ZFS, PromTarget, prom_datasource
|
||||
from common import PrometheusTemplate
|
||||
from node_consts import CPU_BASIC_COLORS, MEMORY_BASIC_COLORS
|
||||
|
||||
dashboard = MyDashboard(
|
||||
dashboard = Dashboard(
|
||||
title='Node Exporter',
|
||||
uid='node',
|
||||
description='Node Exporter (not quite full)',
|
||||
tags=[
|
||||
'linux',
|
||||
],
|
||||
timezone='browser',
|
||||
templating=Templating(list=[
|
||||
# Datasource
|
||||
prom_template,
|
||||
PrometheusTemplate,
|
||||
# Job
|
||||
Template(
|
||||
name='job',
|
||||
label='Job',
|
||||
dataSource=prom_datasource,
|
||||
dataSource='${datasource}',
|
||||
query='label_values(node_uname_info, job)',
|
||||
),
|
||||
# Instance
|
||||
Template(
|
||||
name='instance',
|
||||
label='Instance',
|
||||
dataSource=prom_datasource,
|
||||
dataSource='${datasource}',
|
||||
query='label_values(node_uname_info{job="$job"}, instance)',
|
||||
),
|
||||
]),
|
||||
panels=[
|
||||
# CPU Basic
|
||||
MyTimeSeries(
|
||||
TimeSeries(
|
||||
title='CPU Basic',
|
||||
description='Basic CPU usage info',
|
||||
unit=PERCENT_UNIT,
|
||||
unit=PERCENT_UNIT_FORMAT,
|
||||
gridPos=GridPos(h=8, w=12, x=0, y=0),
|
||||
stacking={'mode': 'percent'},
|
||||
lineWidth=1,
|
||||
fillOpacity=30,
|
||||
showPoints='never',
|
||||
stacking={'mode': 'percent', 'group': 'A'},
|
||||
tooltipMode='all',
|
||||
tooltipSort='desc',
|
||||
targets=[
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode="system"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Busy System',
|
||||
refId='A',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode="user"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Busy User',
|
||||
refId='B',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode="iowait"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Busy Iowait',
|
||||
refId='C',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode=~".*irq"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Busy IRQs',
|
||||
refId='D',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode!="idle",mode!="user",mode!="system",mode!="iowait",mode!="irq",mode!="softirq"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Busy Other',
|
||||
refId='E',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='sum(irate(node_cpu_seconds_total{instance="$instance",job="$job", mode="idle"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance="$instance",job="$job"}) by (cpu)))',
|
||||
legendFormat='Idle',
|
||||
refId='F',
|
||||
),
|
||||
],
|
||||
# Extra JSON for the colors
|
||||
extraJson=CPU_BASIC_COLORS,
|
||||
),
|
||||
# Memory Basic
|
||||
MyTimeSeries(
|
||||
TimeSeries(
|
||||
title='Memory Basic',
|
||||
description='Basic memory usage',
|
||||
unit=BYTES_IEC,
|
||||
gridPos=GridPos(h=8, w=12, x=12, y=0),
|
||||
stacking={'mode': 'normal'},
|
||||
valueMin=0,
|
||||
lineWidth=1,
|
||||
fillOpacity=30,
|
||||
showPoints='never',
|
||||
stacking={'mode': 'normal', 'group': 'A'},
|
||||
tooltipMode='all',
|
||||
tooltipSort='desc',
|
||||
targets=[
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='node_memory_MemTotal_bytes{instance="$instance",job="$job"}',
|
||||
format='time_series',
|
||||
legendFormat='RAM Total',
|
||||
refId='A',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='node_memory_MemTotal_bytes{instance="$instance",job="$job"} - node_memory_MemFree_bytes{instance="$instance",job="$job"} - (node_memory_Cached_bytes{instance="$instance",job="$job"} + node_memory_Buffers_bytes{instance="$instance",job="$job"} + node_memory_SReclaimable_bytes{instance="$instance",job="$job"})',
|
||||
format='time_series',
|
||||
legendFormat='RAM Used',
|
||||
hide=CONF_SUPPORT_ZFS,
|
||||
refId='B',
|
||||
),
|
||||
PromTarget(
|
||||
expr='node_memory_MemTotal_bytes{instance="$instance",job="$job"} - node_memory_MemFree_bytes{instance="$instance",job="$job"} - (node_memory_Cached_bytes{instance="$instance",job="$job"} + node_memory_Buffers_bytes{instance="$instance",job="$job"} + node_memory_SReclaimable_bytes{instance="$instance",job="$job"}) - node_zfs_arc_size{instance="$instance",job="$job"}',
|
||||
format='time_series',
|
||||
legendFormat='RAM Used',
|
||||
hide=not CONF_SUPPORT_ZFS,
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='node_memory_Cached_bytes{instance="$instance",job="$job"} + node_memory_Buffers_bytes{instance="$instance",job="$job"} + node_memory_SReclaimable_bytes{instance="$instance",job="$job"}',
|
||||
legendFormat='RAM Cache + Buffer',
|
||||
refId='C',
|
||||
),
|
||||
PromTarget(
|
||||
expr='node_zfs_arc_size{instance="$instance",job="$job"}',
|
||||
legendFormat='ZFS Arc',
|
||||
hide=not CONF_SUPPORT_ZFS,
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='node_memory_MemFree_bytes{instance="$instance",job="$job"}',
|
||||
legendFormat='RAM Free',
|
||||
refId='D',
|
||||
),
|
||||
PromTarget(
|
||||
Target(
|
||||
datasource='${datasource}',
|
||||
expr='(node_memory_SwapTotal_bytes{instance="$instance",job="$job"} - node_memory_SwapFree_bytes{instance="$instance",job="$job"})',
|
||||
legendFormat='SWAP Used',
|
||||
refId='E',
|
||||
),
|
||||
],
|
||||
overrides=[
|
||||
# Prevent total memory from being stacked
|
||||
{
|
||||
'matcher': {
|
||||
'id': 'byName',
|
||||
'options': 'RAM Total'
|
||||
},
|
||||
'properties': [
|
||||
{
|
||||
'id': 'custom.stacking',
|
||||
'value': {'mode': 'none'}
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
),
|
||||
# Network Traffic Basic
|
||||
MyTimeSeries(
|
||||
title='Network Traffic Basic',
|
||||
description='Basic network usage info per interface',
|
||||
unit=BITS_SEC,
|
||||
gridPos=GridPos(h=8, w=12, x=0, y=8),
|
||||
tooltipSort='desc',
|
||||
axisCenteredZero=True,
|
||||
targets=[
|
||||
PromTarget(
|
||||
expr='irate(node_network_receive_bytes_total{instance="$instance",job="$job"}[$__rate_interval]) * 8',
|
||||
legendFormat='rx {{ device }}',
|
||||
),
|
||||
PromTarget(
|
||||
expr='-irate(node_network_transmit_bytes_total{instance="$instance",job="$job"}[$__rate_interval]) * 8',
|
||||
legendFormat='tx {{ device }}',
|
||||
),
|
||||
],
|
||||
),
|
||||
# Disk Space Basic
|
||||
MyTimeSeries(
|
||||
title='Disk Space Used Basic',
|
||||
description='Disk space used of all filesystems mounted',
|
||||
unit=PERCENT_UNIT,
|
||||
gridPos=GridPos(h=8, w=12, x=12, y=8),
|
||||
targets=[
|
||||
PromTarget(
|
||||
expr='1 - (node_filesystem_avail_bytes{instance="$instance",job="$job",device!~"rootfs"} / node_filesystem_size_bytes{instance="$instance",job="$job",device!~"rootfs"})',
|
||||
legendFormat='{{ mountpoint }}',
|
||||
),
|
||||
],
|
||||
# Extra JSON for the colors
|
||||
extraJson=MEMORY_BASIC_COLORS,
|
||||
),
|
||||
# TODO: Network Basic
|
||||
# TODO: Disk Basic
|
||||
],
|
||||
).auto_panel_ids()
|
||||
|
@ -0,0 +1,487 @@
|
||||
# TODO: Question life decisions (I'm not sure if this is good)
|
||||
|
||||
CPU_BASIC_COLORS = {
|
||||
"fieldConfig": {
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Busy Iowait"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#890F02",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Idle"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#052B51",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Busy Iowait"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#890F02",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Idle"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#7EB26D",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Busy System"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#EAB839",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Busy User"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#0A437C",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Busy Other"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#6D1F62",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
MEMORY_BASIC_COLORS = {
|
||||
"fieldConfig": {
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Apps"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#629E51",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Buffers"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#614D93",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Cache"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#6D1F62",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Cached"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#511749",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Committed"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#508642",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Free"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#0A437C",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#CFFAFF",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inactive"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#584477",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "PageTables"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#0A50A1",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Page_Tables"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#0A50A1",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "RAM_Free"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#E0F9D7",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "SWAP Used"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#BF1B00",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Slab"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#806EB7",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Slab_Cache"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#E0752D",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Swap"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#BF1B00",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Swap Used"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#BF1B00",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Swap_Cache"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#C15C17",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Swap_Free"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#2F575E",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Unused"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#EAB839",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "RAM Total"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#E0F9D7",
|
||||
"mode": "fixed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "custom.fillOpacity",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"id": "custom.stacking",
|
||||
"value": {
|
||||
"group": False,
|
||||
"mode": "normal"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "RAM Cache + Buffer"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#052B51",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "RAM Free"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#7EB26D",
|
||||
"mode": "fixed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Available"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "color",
|
||||
"value": {
|
||||
"fixedColor": "#DEDAF7",
|
||||
"mode": "fixed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "custom.fillOpacity",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"id": "custom.stacking",
|
||||
"value": {
|
||||
"group": False,
|
||||
"mode": "normal"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -31,4 +31,4 @@ name_attribute_path = name
|
||||
|
||||
# Optionally map user groups to Grafana roles
|
||||
allow_assign_grafana_admin = true
|
||||
role_attribute_path = contains(groups[*], 'admins') && 'GrafanaAdmin' || 'Viewer'
|
||||
role_attribute_path = contains(groups[*], 'Grafana Admins') && 'GrafanaAdmin' || 'Viewer'
|
||||
|
@ -1,11 +1,18 @@
|
||||
{% import 'contrib/compose_helpers.j2' as helpers with context %}
|
||||
|
||||
networks:
|
||||
{{ helpers.default_network(254) | indent(2) }}
|
||||
traefik:
|
||||
internal: true
|
||||
enable_ipv6: true
|
||||
ipam:
|
||||
config:
|
||||
# TODO: Consider removing traefik network, it shouldn't be needed with host networking
|
||||
- subnet: {{ traefik_subnet }}/24
|
||||
- subnet: {{ docker_ipv6_subnet | ansible.utils.ipsubnet(80, 255) }}
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.4
|
||||
image: traefik:v3.0
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
@ -16,10 +23,14 @@ services:
|
||||
- ./rules:/rules:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- {{ base_volume_path }}/traefik/rules:/rules/extra:ro
|
||||
- {{ base_volume_path }}/traefik/logs:/logs
|
||||
- {{ base_volume_path }}/traefik/acme:/acme
|
||||
|
||||
# This is mostly just so that the traefik network gets created
|
||||
whoami:
|
||||
image: containous/whoami
|
||||
container_name: whoami
|
||||
labels:
|
||||
- {{ helpers.traefik_labels('whoami', port='80') | indent(6) }}
|
||||
- {{ helpers.traefik_labels('whoami', port=80) | indent(6) }}
|
||||
networks:
|
||||
- traefik
|
@ -2,8 +2,11 @@ api:
|
||||
insecure: true
|
||||
|
||||
log:
|
||||
filePath: /logs/traefik.log
|
||||
level: INFO
|
||||
accessLog:
|
||||
filePath: /logs/access.log
|
||||
bufferingSize: 100
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
@ -12,16 +15,6 @@ entryPoints:
|
||||
address: ":443"
|
||||
http3:
|
||||
advertisedPort: 443
|
||||
forwardedHeaders:
|
||||
trustedIPs:
|
||||
# https://www.cloudflare.com/ips-v6
|
||||
- 2400:cb00::/32
|
||||
- 2606:4700::/32
|
||||
- 2803:f800::/32
|
||||
- 2405:b500::/32
|
||||
- 2405:8100::/32
|
||||
- 2a06:98c0::/29
|
||||
- 2c0f:f248::/32
|
||||
metrics:
|
||||
address: ":8082"
|
||||
|
||||
@ -46,6 +39,7 @@ certificatesResolvers:
|
||||
providers:
|
||||
docker:
|
||||
exposedByDefault: false
|
||||
network: traefik_traefik
|
||||
file:
|
||||
directory: /rules
|
||||
watch: true
|
||||
|
@ -1,22 +0,0 @@
|
||||
- name: Get list of running Docker containers
|
||||
docker_host_info:
|
||||
containers: yes
|
||||
register: docker_container_list
|
||||
|
||||
- name: Stop all running Docker containers
|
||||
docker_container:
|
||||
name: "{{ item }}"
|
||||
state: stopped
|
||||
loop: "{{ docker_container_list.containers | map(attribute='Id') | list }}"
|
||||
async: 300
|
||||
poll: 0
|
||||
|
||||
- name: Prune all Docker containers and networks
|
||||
docker_prune:
|
||||
containers: yes
|
||||
networks: yes
|
||||
|
||||
- name: Clean alpina directory
|
||||
file:
|
||||
path: "{{ alpina_svc_path }}"
|
||||
state: absent
|
@ -32,7 +32,7 @@
|
||||
state: enabled
|
||||
immediate: yes
|
||||
|
||||
- name: Disallow Web
|
||||
- name: Allow Web
|
||||
become: yes
|
||||
firewalld:
|
||||
service: http
|
||||
@ -64,22 +64,6 @@
|
||||
state: enabled
|
||||
immediate: yes
|
||||
|
||||
- name: Allow 2222 tcp for pgrok ssh tunnel
|
||||
become: yes
|
||||
firewalld:
|
||||
port: 2222/tcp
|
||||
permanent: yes
|
||||
state: enabled
|
||||
immediate: yes
|
||||
|
||||
- name: Allow Syncthing
|
||||
become: yes
|
||||
firewalld:
|
||||
service: syncthing
|
||||
permanent: yes
|
||||
state: enabled
|
||||
immediate: yes
|
||||
|
||||
- name: Reboot if needed
|
||||
become: yes
|
||||
ansible.builtin.reboot:
|
||||
|
@ -1,5 +1,12 @@
|
||||
- name: IPv6 subnet for Docker
|
||||
debug:
|
||||
- name: Get IPv6 subnet for Docker
|
||||
set_fact:
|
||||
docker_ipv6_subnet: "{{ \
|
||||
ansible_default_ipv6.address \
|
||||
| ansible.utils.ipsubnet(64) \
|
||||
| ansible.utils.ipsubnet(72, docker_ipv6_index) \
|
||||
}}"
|
||||
|
||||
- debug:
|
||||
var: docker_ipv6_subnet
|
||||
|
||||
- name: Configure Docker daemon
|
||||
@ -28,6 +35,33 @@
|
||||
state: disabled
|
||||
register: docker0_firewalld
|
||||
|
||||
- name: Get list of running Docker containers
|
||||
docker_host_info:
|
||||
containers: yes
|
||||
register: docker_container_list
|
||||
when: clean_desired is true
|
||||
|
||||
- name: Stop all running Docker containers
|
||||
docker_container:
|
||||
name: "{{ item }}"
|
||||
state: stopped
|
||||
loop: "{{ docker_container_list.containers | map(attribute='Id') | list }}"
|
||||
async: 300
|
||||
poll: 0
|
||||
when: clean_desired is true and docker_container_list.containers | length > 0
|
||||
|
||||
- name: Prune all Docker containers and networks
|
||||
docker_prune:
|
||||
containers: yes
|
||||
networks: yes
|
||||
when: clean_desired is true
|
||||
|
||||
- name: Clean alpina directory
|
||||
file:
|
||||
path: "{{ alpina_svc_path }}"
|
||||
state: absent
|
||||
when: clean_desired is true
|
||||
|
||||
- name: Restart Docker daemon
|
||||
become: yes
|
||||
service:
|
||||
|
@ -1,5 +1,6 @@
|
||||
- hosts: alpina
|
||||
roles:
|
||||
- docker_host
|
||||
- alpina
|
||||
post_tasks:
|
||||
- name: Docker prune objects
|
||||
|
12
site.yml
12
site.yml
@ -1,4 +1,12 @@
|
||||
- hosts: alpina
|
||||
- hosts: all
|
||||
roles:
|
||||
- common
|
||||
- docker_host
|
||||
pre_tasks:
|
||||
- name: Set fact for clean desired of docker objects and compose files
|
||||
set_fact:
|
||||
# clean_desired_arg is an extra variable passed to the playbook
|
||||
clean_desired: "{{ clean_desired_arg | bool }}"
|
||||
|
||||
|
||||
- name: Install services
|
||||
import_playbook: services.yml
|
||||
|
Loading…
x
Reference in New Issue
Block a user