Compare commits

...

33 commits

Author SHA1 Message Date
340b58c5bb WOrked some more 2025-04-06 20:39:50 +02:00
a38f4d30a2 Authentik initial setup 2025-04-03 20:53:28 +02:00
419461db50 Postgres stuffs 2025-03-31 21:19:32 +02:00
c5178bfb0f Some nixos stuffs 2025-03-31 21:18:17 +02:00
fe5d434c11 add 2nd joke site 2025-03-29 22:56:46 +01:00
97c06afbf7 Add nginx config for stortissvatnet.no 2025-03-29 21:12:00 +01:00
4f62dbd3fc Edit proxy conf 2025-03-29 20:47:35 +01:00
61bd9fe1d8 Move polsevev.dev to nixos machine 2025-03-29 20:47:10 +01:00
0f15bfe480 Some stuff 2025-03-29 18:36:10 +01:00
49b2ee0dc8 nginx flake 2025-02-12 22:03:11 +01:00
e90fa2d107 add nginx config 2025-02-12 22:00:29 +01:00
b3ef8435f7 flake 2025-02-12 21:40:04 +01:00
3fd65f494d I have a nixos machine now, i might honestly migrate it all to nixos 2025-02-08 23:17:19 +01:00
147b69a510 Remote backup implemented 2025-01-28 21:19:42 +01:00
d1a014cc2b Lots of stuff just changed. Revamped the k3s setup 2024-12-08 00:27:56 +01:00
489bccc18a Move file vm and enable service on startup 2024-11-09 00:31:26 +01:00
c29d01834a Merge pull request 'filebrowser' (#1) from filebrowser into master
Reviewed-on: #1
2024-11-08 18:57:07 +00:00
44e1a29f0a Added the filebrowser service 2024-11-08 19:55:52 +01:00
4cf62db46c New VM arkivet 2024-11-08 17:19:10 +01:00
428b76d3d2 Merge branch 'master' of code.polsevev.dev:polsevev/homelab 2024-11-08 17:13:09 +01:00
f44c1a2d1c Custom logo on forgejo 2024-11-08 17:12:51 +01:00
d0d20ecf66 Create known hosts for worker tasks 2024-10-29 22:38:08 +01:00
43e25de976 Had to remake byggmester 2024-10-28 19:58:10 +01:00
20a2cb240f Setup action runner forgejo 2024-10-26 13:22:38 +02:00
cbde6eb7c9 Readme edit 2024-10-26 00:24:37 +02:00
75c85d28f7 Set up a runner VM 2024-10-26 00:23:06 +02:00
68da70ca6e Set up forgejo! 2024-10-25 23:08:34 +02:00
8f7cc8158f Power savings for proxmox and some work on forgejo 2024-10-23 21:21:36 +02:00
37556eb779 Add to setup.yml 2024-10-20 21:55:46 +02:00
aafbc59524 Added kitchenowl 2024-10-20 21:53:33 +02:00
e9d8088e91 Oooops, glad i saw i pushed API key xD 2024-10-20 19:51:25 +02:00
be37b5118a Added next server to grafana 2024-10-20 19:43:16 +02:00
e545de77bb Moved to SMI and internally created ssl certs 2024-10-20 19:06:51 +02:00
87 changed files with 5273 additions and 2558 deletions

1
.gitignore vendored
View file

@ -37,3 +37,4 @@ override.tf.json
terraform.rc terraform.rc
.vscode .vscode
ansible/.vault_password ansible/.vault_password
ansible/roles/nginx/vars/main/vault.yml

View file

@ -2,6 +2,11 @@
The goal of this project is to share the things i set up in my own homelab. I created this as a way to inspire others to create their own homelabs! The goal of this project is to share the things i set up in my own homelab. I created this as a way to inspire others to create their own homelabs!
## Caveats
- Most of these roles are NOT ready to be used on other environments
- If i leak some secrets, please contact me :)
## Why do some files look wierd? ## Why do some files look wierd?
I have used ansible-vault to protect some parts of my setup, as i don't want all of it documented on the worldwide web :) I have used ansible-vault to protect some parts of my setup, as i don't want all of it documented on the worldwide web :)

View file

@ -1,2 +1,5 @@
[defaults] [defaults]
vault_password_file = .vault_password vault_password_file = .vault_password
forks = 30
host_key_checking = False
nocows=1

View file

@ -1,6 +1,6 @@
--- ---
- name: Setup uptime_kuma - name: Configure HaProxy
hosts: hosts:
- grafana - olympus_entry
roles: roles:
- grafana - olympus_entry

View file

@ -2,8 +2,8 @@
- name: Bootstrap tailscale on host - name: Bootstrap tailscale on host
vars: vars:
headscale_domain: "https://headscale.polsevev.dev" headscale_domain: "https://headscale.polsevev.dev"
username: havneboks username: hephaestus
hosts: hosts:
- action_runner - hephaestus
roles: roles:
- tailscale - tailscale

View file

@ -0,0 +1 @@
k3s_version: v1.31.3+k3s1

View file

@ -46,8 +46,8 @@ hyperion
[olympus_entry] [olympus_entry]
37.27.192.11 37.27.192.11
[action_runner] [byggmester]
192.168.1.50 192.168.1.54
[brevgress] [brevgress]
192.168.1.70 192.168.1.70
@ -55,19 +55,48 @@ hyperion
[havneboks] [havneboks]
192.168.1.51 192.168.1.51
[matmonster] [fabrikken]
192.168.1.30 192.168.1.31
[umami]
192.168.1.52
[forgejo]
192.168.1.53
[arkivet]
192.168.1.55
[mestere]
192.168.1.80
192.168.1.81
192.168.1.82
[agenter]
192.168.1.40
192.168.1.41
192.168.1.42
192.168.1.43
[vms] [vms]
[vms:children] [vms:children]
grafana grafana
action_runner
brevgress brevgress
havneboks havneboks
matmonster fabrikken
polsevev
umami
forgejo
byggmester
arkivet
agenter
mestere
[vps] [vps]
[vps:children] [vps:children]
olympus_entry olympus_entry
[hephaestus]
192.168.1.25

View file

@ -0,0 +1 @@
k3s_version: v1.31.3+k3s1

View file

@ -0,0 +1,96 @@
[all:vars]
ansible_connection=ssh
ansible_user=ansible
[cronus]
100.64.0.5 ansible_user=root
[hermes]
100.64.0.13 cloudinit_id=9004
[ares]
100.64.0.12 cloudinit_id=9003
[poseidon]
100.64.0.9 cloudinit_id=9001
[hades]
100.64.0.11 cloudinit_id=9002
[oceanus]
100.64.0.14 cloudinit_id=9005
[zeus]
100.64.0.4 cloudinit_id=9000
[hyperion]
100.64.0.19
[soteria]
100.64.0.2
[proxmox]
[proxmox:children]
zeus
ares
hades
hermes
oceanus
poseidon
hyperion
[polsevev]
100.64.0.6
[grafana]
100.64.0.16
[olympus_entry]
100.64.0.3
[byggmester]
100.64.0.20
[brevgress]
100.64.0.15
[havneboks]
100.64.0.10
[fabrikken]
[umami]
100.64.0.17
[forgejo]
100.64.0.18
[arkivet]
100.64.0.22
[mestere]
[agenter]
[vms]
[vms:children]
grafana
brevgress
havneboks
fabrikken
polsevev
umami
forgejo
byggmester
arkivet
agenter
mestere
[vps]
[vps:children]
olympus_entry

View file

@ -0,0 +1,3 @@
---
arkivet_version_number: v2.31.2
arkivet_download_url: "https://github.com/filebrowser/filebrowser/releases/download/{{ arkivet_version_number }}/linux-amd64-filebrowser.tar.gz"

View file

@ -0,0 +1,39 @@
$ANSIBLE_VAULT;1.1;AES256
61373764396335646131633862653539626534326362613561626436613563323464613236386533
6165653233313131636262656234633132386634303239380a336430303836626535326566653063
31306531396535613663363862323062386563343933343234636666323636656134663466366163
3266306161613863640a613666333431303737393338316332633030396636656330393535633634
37626563323164656635623637366136653761633130616334323330646631386531376439343730
38386661623238313833616661336335363565353131346133306535303336316465386635393936
61333962333437316539326339316432643032303966636465636236346338356566313935323666
61653565313733306134356437363666626161643236373436613935626433323638366663343033
39396266323065623332336637616637316235303161333432303337663530383862323636343461
35376239313131386161326633633361633165353565353666386263653936326461613739366334
62336236333035363965326362613737646466633066366639323762623939643936343962646630
34323737626632373636366137333762303439383036393463336438333934643834303432393030
32353336336466383663313366636464386534333334633931343833626566663136663165326666
38303931376230363961343931663562633663623331656661363030326161616165613262343932
34666239373561353965366530356531643134356133633664336261396236393962623966303665
31653830373036643063373036316533386130623231303934303531666330333834376161333964
30636666623833396339373534346438316436343266643830616363656462623562666331383862
33373864623737623066336438363666306537633135346363376263626633666562343463643439
34376633366633326363393563613530656166663266303835316636666133386337353461356364
37376661636662383734383531653131303235663035373466326636623734613937313832653332
37666563306361333534393237343166626330633265373066626334323166383733323165333537
62393963326461383036353239343430646331366365326530623566356133393236363465353939
39663130623130356336656635326339376461323566613138663033356339316262343766393737
62633762373464646332303130653364313961613464366563366130616132393432386239633537
38323864306634386330373839646439316464343965663631623030656139376665303764333033
31653030376264346537366561666365306230656665393431656266646639343037663636306437
62343139313535343532323137336262396664633534643366623637613038306566333738366463
34623163656166616661346330376439643665333430343066323862653931343430323566656430
38626339396135653763366266646133363065313630366530396164626139306264623133323730
39353630376632393865346534666232393662343532323265356466346138666462636262393732
36633530336161383233313065383033353136626366613237656434376636383532373330333536
61366338316432303162633535653265616465653733383639313731356432646666363739306362
65373664623263323862376663303063336437323832366432363634376137336561343131366231
34613166636438333533663563636361616664333361303835663139636230653137653038323731
35353162633461346630323031376364323063376461656436636139653033626238643833373266
31663237383638666464616439623234366435663665653463666533356137313534616130366233
61336334646636386433636131333861376361663261393335323336386234363339653666373763
3635636235326537366133653264346539353063636239383937

View file

@ -0,0 +1,11 @@
[Unit]
Description=Selfhosted file browser with web UI
After=network.target
[Service]
RuntimeDirectory=/opt/filebrowser/
User=arkiv
ExecStart=/opt/filebrowser/filebrowser -c /opt/filebrowser/config.yml
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,6 @@
---
- name: Restart filebrowser
ansible.builtin.systemd:
name: filebrowser.service
state: restarted
become: true

View file

@ -0,0 +1,5 @@
---
dependencies:
- role: nginx
nginx_acme_sh_domains:
- files.polsevev.dev

View file

@ -0,0 +1,90 @@
---
- name: Create filebrowser user
ansible.builtin.user:
name: arkiv
password: "!"
home: "/home/arkiv"
create_home: true
system: true
shell: /bin/bash
comment: "arkiv system user"
become: true
- name: Create binary directory
ansible.builtin.file:
path: /opt/filebrowser
state: directory
owner: arkiv
mode: "0700"
become: true
notify: Restart filebrowser
- name: Download program
ansible.builtin.get_url:
url: "{{ arkivet_download_url }}"
dest: /tmp/filebrowser.tar.gz
owner: ansible
mode: "0700"
- name: Untar
ansible.builtin.unarchive:
src: /tmp/filebrowser.tar.gz
dest: /opt/filebrowser
mode: "0700"
owner: arkiv
remote_src: true
become: true
notify: Restart filebrowser
- name: Create mount directory
ansible.builtin.file:
state: directory
owner: arkiv
path: /mnt/arkivet
mode: "0777"
become: true
- name: Mount unraid server share
ansible.posix.mount:
src: //192.168.1.100/arkivet
path: /mnt/arkivet
opts: "rw,vers=3,noserverino,file_mode=0666,dir_mode=0777,username={{ arkivet_mount_user }},password={{ arkivet_mount_password }}"
fstype: cifs
boot: true
state: mounted
become: true
notify: Restart filebrowser
- name: Template config
ansible.builtin.template:
src: config.yml.j2
dest: /opt/filebrowser/config.yml
owner: arkiv
mode: "0600"
become: true
notify: Restart filebrowser
- name: Copy systemd service
ansible.builtin.copy:
src: filebrowser.service
dest: /etc/systemd/system/filebrowser.service
owner: root
mode: "0644"
become: true
notify: Restart filebrowser
- name: Ensure service started
ansible.builtin.systemd:
name: filebrowser.service
state: started
enabled: true
daemon_reload: true
become: true
- name: Copy nginx config
ansible.builtin.copy:
src: filebrowser.conf
dest: /etc/nginx/sites-enabled/filebrowser.conf
owner: root
mode: "0644"
become: true
notify: Reload nginx

View file

@ -0,0 +1,15 @@
$ANSIBLE_VAULT;1.1;AES256
30366465653935666434313935343934646434306166373835396635396662396163653633663739
6137373337336565623532303031653637623161316135640a333762656133656532393266656163
36393632626364656635393034373934386630306461323933613036396637636130636433643863
6335323339613430650a363439363865346130653366663834383931386163396366666331636432
61303061376530336139326237656665653734656235373436386261613664306638343966393831
35316662303864356235353261333163613632326234313536656461633833396263303738636131
65373930656131393936643366626532636136316461656631353236343834376666363939633532
64663539306632653837366335366661336236343632393663616664383565346365333161366132
31323331303061356338646338636464346333356464653734343238646134386663363064373732
32353565656365353239626136633030656138633166333938636232333266343039376131616536
61393132653763633638376330326564623733663738653132613462333662393965626533333261
66303463653430313035396431653461383466316266663165333562653736346636626266393661
65343963363834356536373739363361393030666235656665326139336630376336366166366435
3166346363353365333363613662666364656636393432613932

View file

@ -0,0 +1,16 @@
$ANSIBLE_VAULT;1.1;AES256
39363239636565323738396539643333383339316162333739313033363038313462626638386161
6165643436323662393535396338356534633163666434660a316231653761333933626434653961
32396264393564333632346565383064356237396263353935326438643839636433303365303031
6431646136373836310a383935616533376336366663303236306661383235303037623565613237
34323865653165656336663062343735376335636538333761306639306261653664363763626163
35633465663333353331393966623332356331336631393465373165303166396532636363343765
63313966663966623164613732333236353666316264363638356337323132666662653430363330
33633630373065376133393038383937373130643466613031663261643035633132666338663765
30316466303235613462656663393961303165383634636534376163376534333863323137333330
30356463356266333732666237323037646333353361346235303236363130373864656131616630
66323631653630343162373038336134616431383330383131613132623436633232393063363661
30343663326231626639373839326435313934353666656566633234613830363332346464656234
66393739366462366230353138646430653730363438363264376534373930653162643863383731
63656438303533626231353330636138356236633065343738386639623834393631306434616361
373936356539623938653836323431316665

View file

@ -0,0 +1,76 @@
log:
# The level of logging, can be trace, debug, info, warn, error, fatal
level: info
runner:
# Where to store the registration result.
file: .runner
# Execute how many tasks concurrently at the same time.
capacity: 1
# Extra environment variables to run jobs.
envs:
# Extra environment variables to run jobs from a file.
# It will be ignored if it's empty or the file doesn't exist.
env_file: .env
# The timeout for a job to be finished.
# Please note that the Forgejo instance also has a timeout (3h by default) for the job.
# So the job could be stopped by the Forgejo instance if it's timeout is shorter than this.
timeout: 12h
# Whether skip verifying the TLS certificate of the Forgejo instance.
insecure: false
# The timeout for fetching the job from the Forgejo instance.
fetch_timeout: 5s
# The interval for fetching the job from the Forgejo instance.
fetch_interval: 2s
# The labels of a runner are used to determine which jobs the runner can run, and how to run them.
# Like: ["macos-arm64:host", "ubuntu-latest:docker://node:16-bullseye", "ubuntu-22.04:docker://node:16-bullseye"]
# If it's empty when registering, it will ask for inputting labels.
# If it's empty when execute `deamon`, will use labels in `.runner` file.
labels: ["ubuntu"]
cache:
# Enable cache server to use actions/cache.
enabled: true
# The directory to store the cache data.
# If it's empty, the cache data will be stored in $HOME/.cache/actcache.
dir: ""
# The host of the cache server.
# It's not for the address to listen, but the address to connect from job containers.
# So 0.0.0.0 is a bad choice, leave it empty to detect automatically.
host: ""
# The port of the cache server.
# 0 means to use a random available port.
port: 0
container:
# Specifies the network to which the container will connect.
# Could be host, bridge or the name of a custom network.
# If it's empty, create a network automatically.
network: ""
# Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker).
privileged: false
# And other options to be used when the container is started (eg, --add-host=my.forgejo.url:host-gateway).
options:
# The parent directory of a job's working directory.
# If it's empty, /workspace will be used.
workdir_parent:
# Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob
# You can specify multiple volumes. If the sequence is empty, no volumes can be mounted.
# For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to:
# valid_volumes:
# - data
# - /src/*.json
# If you want to allow any volume, please use the following configuration:
# valid_volumes:
# - '**'
valid_volumes: []
# overrides the docker client host with the specified one.
# If it's empty, act_runner will find an available docker host automatically.
# If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers.
# If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work.
docker_host: ""
host:
# The parent directory of a job's working directory.
# If it's empty, $HOME/.cache/act/ will be used.
workdir_parent:

View file

@ -0,0 +1,19 @@
[Unit]
Description=Forgejo-runner
After=syslog.target
After=network.target
[Service]
RestartSec=2s
Type=simple
User=forgejo-runner
Group=forgejo-runner
WorkingDirectory=/home/forgejo-runner
ExecStart=/home/forgejo-runner/forgejo-runner daemon --config config.yml
Restart=always
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,11 @@
---
- name: Restart forgejo-runner
ansible.builtin.service:
name: forgejo-runner
state: restarted
become: true
- name: Daemon reload
ansible.builtin.systemd:
daemon_reload: true
become: true

View file

@ -0,0 +1,4 @@
---
dependencies:
- common
- docker

View file

@ -0,0 +1,119 @@
---
- name: Install building dependencies
ansible.builtin.apt:
pkg:
- npm
- rsync
update_cache: true
become: true
- name: Create groups
ansible.builtin.group:
name: "{{ item }}"
loop:
- docker
- forgejo-runner
become: true
- name: Create forgejo-runner user
ansible.builtin.user:
name: forgejo-runner
groups: docker
group: forgejo-runner
password: "!"
home: "/home/forgejo-runner"
create_home: true
system: true
shell: /bin/bash
comment: "forgejo-runner system user"
become: true
notify: Restart forgejo-runner
- name: Download
ansible.builtin.get_url:
url: "{{ byggmester_download_url }}"
dest: /home/forgejo-runner/forgejo-runner
mode: "774"
owner: forgejo-runner
become: true
notify: Restart forgejo-runner
- name: Copy runner service
ansible.builtin.copy:
src: forgejo-runner.service
dest: /etc/systemd/system/forgejo-runner.service
mode: "0644"
owner: root
become: true
notify: Daemon reload
- name: Copy config
ansible.builtin.copy:
src: config.yml
dest: /home/forgejo-runner/config.yml
mode: "0744"
owner: forgejo-runner
become: true
notify: Restart forgejo-runner
- name: See if runner file already exists
ansible.builtin.stat:
path: /home/forgejo-runner/.runner
register: is_registered
become: true
- name: Regisert new runner
when: "not is_registered.stat.exists"
block:
- name: Generate secret
delegate_to: forgejo
ansible.builtin.command: >-
/usr/local/bin/forgejo/forgejo forgejo-cli actions generate-secret
register: generated_secret
become: true
become_user: forgejo
- name: Create a runner on forgejo server
delegate_to: forgejo
ansible.builtin.command: >-
/usr/local/bin/forgejo/forgejo --config /etc/forgejo/app.ini forgejo-cli actions register
--name byggmester
--labels ubuntu
--secret {{ generated_secret.stdout }}
become: true
become_user: forgejo
- name: Join byggmester runner
ansible.builtin.command: >-
./forgejo-runner create-runner-file --instance https://code.polsevev.dev
--secret {{ generated_secret.stdout }}
args:
chdir: "/home/forgejo-runner"
become: true
become_user: forgejo-runner
notify: Restart forgejo-runner
- name: Ensure runnner service is started
ansible.builtin.service:
name: forgejo-runner.service
state: started
enabled: true
become: true
- name: Create .ssh
ansible.builtin.file:
state: directory
owner: forgejo-runner
path: /home/forgejo-runner/.ssh
group: forgejo-runner
mode: "0755"
become: true
- name: Create known hosts
ansible.builtin.file:
state: touch
owner: forgejo-runner
path: /home/forgejo-runner/.ssh/known_hosts
group: forgejo-runner
mode: "0600"
become: true

View file

@ -0,0 +1,4 @@
---
byggmester_runner_version: 3.5.1
byggmester_download_url: "https://code.forgejo.org/forgejo/runner/releases/download/v3.5.1/forgejo-runner-{{ byggmester_runner_version }}-linux-amd64"
byggmester_checksum: sha1:badd86f725c507dac37a28f03dbd4d7350195554

View file

@ -12,3 +12,8 @@
- lm-sensors - lm-sensors
update_cache: true update_cache: true
become: true become: true
- name: Import proxmox common when applicable
ansible.builtin.include_tasks:
file: proxmox.yml
when: "'proxmox' in group_names"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View file

@ -0,0 +1,20 @@
{{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="gt-pt-4">
<div class="center">
<img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/i-am-developer.gif">
<div class="hero">
<h1 class="ui icon header title">
{{AppDisplayName}}
</h1>
<h2>Welcome to the home of trashy source code and wonky projects</h2>
<h2>If you have ended up here in the search of answers, you should take a moment and wonder where it all went wrong</h2>
<h2>If you still think answers lie beyond here, go ahead, see how wrong you are</h2>
</div>
</div>
</div>
{{template "base/footer" .}}

View file

@ -0,0 +1,41 @@
$ANSIBLE_VAULT;1.1;AES256
34646161366265393637343533653562393439323866613133376235383266633238363136343461
3966363966633665313064663365363333643133666363630a383336356366386233643166313631
32326335383930376138623765616363306530636532633862313266383538346638616230386664
6566373464333263630a613063343163303931313638336136316430323637623662373532376134
30386538373265393364356364353766393266616666353764313562343739656636333939653831
32643661626530623631623637633031343530316634363465613331313530356433343632626664
37323764616266306630336333383365363366653263386232633964366564643664343765633838
30313564323932616237366430393464636537353132666538653032323861323263333662346536
62376134393635666365346466636330663037643839633935393833363632623238396430633839
31363762643562326639303264323234366239623138343639343531376566616636313431643462
36313434396565313065333438333464613231626165383262386239626130333961613962613137
65376338633230383530363661393964633336633466656131326632363663383665316435663032
33323062623464666331366235306239366433393534346238356537333239346465313134323334
36663161313766313331636261383634366663636663313766666233376230616130626561633763
62393636383438303036373839396639303664643539383132316231303835393332303135303638
62316162313562636633386434633032623738643134633832343830333134623364343232306434
61646565323434666530636434363632346437646637363661316331333232313230643437353364
63613962656530303464343562306430303064386431363935653064643234633163323931373638
35353139393831363936333335316632393163386363373937626561363939383930386633363762
37613562396538663033616236343635313566353937346362383366316134633532373265313232
61363562313732646564343064343531656637646338306130313135633232633031646230393330
34656465303332343563653239613934653162666536376333613461653662326536396363306565
63353636326138396339383032643132663861616564316136363534393737356538653861343633
61393066616234656263373764306564376365323830616134343966336338353337326362653938
33393031663136613064306631633936623031343161663738323631653536393138303630616432
34656337653033333436346132353433346133356439643262363263343833363463366432353066
66353333343864333964653834666330323338616634633363613539366163656534613139373433
38303734653966643239313466313930323735623535636336306539333461303432656131303639
38333937663364613239313738646364646237346635356438626539393061353635303832636131
64353761356266306339616537653263656463653732343431393131653131383662383436346562
39326561363163386663363733616437333730353338616533383234393561353165333439633362
35333237663430333565663465333839383966666436393364363935313433633936633966306639
33366234396531623030363037333664323931616632316232666462366465356433333334386436
64326536393063396263363431363665306539313361663730343463393263656566303534333338
64396132346434343263346161303435313263313764653233346662366561626234343831303833
30346163373731626237353265613934636237643633353062363661336365393539353332633336
64353930333466646638633762613565313137396330376364643362366636346636333336343064
61656330373736383139376531313931346365646337386531653439623831643832386565376366
31303263393836303739626163376333383334333930396165656632613633643238323161333163
31626535666138323436

View file

@ -0,0 +1,20 @@
[Unit]
Description=Forgejo (Beyond coding. We forge.)
After=syslog.target
After=network.target
[Service]
LimitNOFILE=524288:524288
RestartSec=2s
Type=simple
User=forgejo
Group=forgejo
WorkingDirectory=/var/lib/forgejo/
ExecStart=/usr/local/bin/forgejo/forgejo web --config /etc/forgejo/app.ini
Restart=always
Environment=USER=forgejo HOME=/home/forgejo FORGEJO_WORK_DIR=/var/lib/forgejo
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,6 @@
---
- name: Restart forgejo
ansible.builtin.service:
name: forgejo
state: restarted
become: true

View file

@ -0,0 +1,12 @@
---
dependencies:
- role: nginx
nginx_acme_sh_domains:
- code.polsevev.dev
- role: restic_backup
repo_name: forgejo
cron_file_name: forgejo_backup
directories_to_backup:
- /var/lib/forgejo
- /usr/local/bin/forgejo
repo_password: "{{ forgejo_backup_password }}"

View file

@ -0,0 +1,126 @@
---
- name: Install dependencies
ansible.builtin.apt:
pkg:
- git
- git-lfs
update_cache: true
become: true
- name: Make forgejo group
ansible.builtin.group:
name: forgejo
become: true
- name: Make forgejo user
ansible.builtin.user:
name: forgejo
group: forgejo
password: "!"
home: "/home/forgejo"
create_home: true
system: true
shell: /bin/bash
comment: "forgejo system user"
become: true
- name: Make forgejo dir
ansible.builtin.file:
state: directory
path: /usr/local/bin/forgejo
owner: forgejo
mode: "755"
become: true
- name: Download forgejo
ansible.builtin.get_url:
dest: /usr/local/bin/forgejo/forgejo
url: "{{ forgejo_binary_download }}"
checksum: "{{ forgejo_sha1 }}"
owner: forgejo
mode: "0755"
become: true
notify: Restart forgejo
- name: Create forgejo logging dir
ansible.builtin.file:
path: /var/log/forgejo
owner: forgejo
mode: "0755"
state: directory
become: true
- name: Create forgejo data dir
ansible.builtin.file:
state: directory
owner: forgejo
group: forgejo
mode: "0750"
path: /var/lib/forgejo
become: true
notify: Restart forgejo
- name: Make forgejo config dir
ansible.builtin.file:
path: /etc/forgejo
owner: root
group: forgejo
mode: "0770"
state: directory
become: true
notify: Restart forgejo
- name: Transfer forgejo config
ansible.builtin.template:
src: app.ini.j2
dest: /etc/forgejo/app.ini
owner: root
mode: "0440"
become: true
notify: Restart forgejo
- name: Copy forgejo service
ansible.builtin.copy:
src: forgejo.service
dest: /etc/systemd/system/forgejo.service
mode: "0644"
owner: root
group: root
become: true
notify: Restart forgejo
- name: Ensure forgejo service started
ansible.builtin.service:
name: forgejo
state: started
enabled: true
become: true
- name: Sync custom forgejo styling
ansible.posix.synchronize:
src: custom
dest: /usr/local/bin/forgejo/
rsync_opts:
- --chown=forgejo:forgejo
- --chmod=755
recursive: true
notify: Restart forgejo
become: true
- name: Make forgejo config dir non writeable
ansible.builtin.file:
path: /etc/forgejo
mode: "0750"
state: directory
become: true
notify: Restart forgejo
when: "not initial_run"
- name: Copy forgejo nginx config
ansible.builtin.copy:
src: forgejo.conf
dest: /etc/nginx/sites-enabled/forgejo.conf
owner: root
mode: "0644"
become: true
notify: Reload nginx

View file

@ -0,0 +1,82 @@
APP_NAME = code.polsevev.dev
APP_SLOGAN = Beyond coding. We Forge.
RUN_USER = forgejo
WORK_PATH = /usr/local/bin/forgejo
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = forgejo
USER = forgejo
PASSWD =
SCHEMA =
SSL_MODE = disable
PATH = /usr/local/bin/forgejo/data/forgejo.db
LOG_SQL = false
[repository]
ROOT = /var/lib/forgejo/forgejo-repositories
[server]
SSH_DOMAIN = code.polsevev.dev
DOMAIN = code.polsevev.dev
HTTP_PORT = 3000
ROOT_URL = https://code.polsevev.dev/
APP_DATA_PATH = /usr/local/bin/forgejo/data
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = {{ forgejo_lfs_jwt_secret | mandatory }}
OFFLINE_MODE = true
[lfs]
PATH = /var/lib/forgejo/data/lfs
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = true
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[cron.update_checker]
ENABLED = true
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/log/forgejo/
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[actions]
ENABLED=true
DEFAULT_ACTIONS_URL = https://code.forgejo.org
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = {{ forgejo_internal_token | mandatory }}
PASSWORD_HASH_ALGO = pbkdf2_hi
[oauth2]
JWT_SECRET = {{ forgejo_jwt_secret | mandatory }}

View file

@ -0,0 +1,5 @@
---
forgejo_version: 9.0.0
forgejo_binary_download: "https://codeberg.org/forgejo/forgejo/releases/download/v9.0.0/forgejo-{{ forgejo_version }}-linux-amd64"
forgejo_sha1: "sha1:bd525cc75452f3b64a23c0484d6760267b6b78e9"
initial_run: false

View file

@ -0,0 +1,20 @@
$ANSIBLE_VAULT;1.1;AES256
30646537356136323837363930613139363034626263366164333664333035396238663766306534
3635313839343834353931663266613139393534336439360a353563386638366562616163323733
62356361633263383462366539353336366337666430613265386133623062323365346364616332
6538336638393231640a306335373138613266356335383865656666303361623336313965633938
34343765323436393266383065393535646665323762646561393363383862616138373430333837
39376464643561336562333230313437373663316338373733333866393762356562636237313938
30653165336431373661303237623865373738383534336364313434393939346262623838666265
31653238656132303439373533363364643839306231656661373838653039313434356538353638
33326138303534383063333836666135383632316634656334626532663536393431613438326332
66396239383862323862386563633035323132393131343831626165633764646563666535626234
37316630613163613063333132646434313531396531316262653666653334623631353532636638
64333939636635333266613562613135386138303932316337336133313233643436656636643932
36336136656630356137643534303831623432633364636263623862326138383165663465383632
34313833363066366630613332613365363963333239356432376539313035346631626136353264
36663434653331363331373333626335636631383931653366343734356661333566633063626463
31343734373737326430353634353434633030326630316337323066313162393262656132376336
39383861633137396232353265383866333766346232666330623135343566396131326564303064
61613934383561613062333539313633336330366661626637613439383165656364306236646233
303731663765393364336462303734646330

View file

@ -1,103 +1,108 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
62633031316638613732633862626132336331633561306338373761656265346461383261366564 34323936326566323736333732666337623939336363623566646661636633616166383664653636
3961366230643461323231633666386161363539303236340a323464363237383165653830303536 3562616638373931336339313861663565393038333733370a336630656262373265303530356433
63653932333733643730313438623335353862393763326663613135643231356337623436643064 34366134383833613463366332656164383934643462643336333066663263646331653861346335
6134623835306266650a393936323064373763363130656531306536643231636130333835376464 3837653937326431620a646362626238323963313139326366386237663731313364666633333837
38626633653463303364396262306236313236356466386437356437623938393336316332633066 37613661333534313435313439316331303036616638326165663761663063623832383461643061
64303265383663366638323139383632383965653563653239303566316663333031613731376134 34396665383561336530343865663734323136346133383463326131383935666535663231306239
65313439386464343061383536643161333664626336373132353832633935323765353364393164 35313565383638643931303963373430323739356138626135313061363465666439316234313231
64343062303662323835613734626361363033313761626336313663356234396566306435613862 36353864373833366464343665363766643834386533373938303865383133653137393930633535
34613462346137623238356330623433353761633939616638643161316332346162313261653530 33393434636534333665396133636532326463666264303137663761353061316165333337616565
34616630653137626366363862623962646530366562313463383331666166336436663038313432 33336536373463303966373662313138393233326664626463333364353531316265363532613264
31653264346630313039393666666539366562643733663237383965393237633039643931643936 31633031623133396233666235353634343464623066373637373462376664663632643239383662
63613035313636336435633164303735396435333535333735633535346464356663353764373064 62323333643235663665303434306333616133383962336463336566646436323837633534363233
30636561376166336535396162626335393133653330346134383266323533626364653537633438 36623037376561666236363564633131363865303363653136653939393965393032653733613562
38346533643839653562326331356337393462663466383338653265633663316439363430613561 36643939383936383030386531316461366363336631343366366164646637313136383532393034
30383135396637373365336330653035653532633635626364366431356533336565386566616131 37623336616235323832633537313161313131393161316239393034373364356463386536346561
37316566323934383938323432373062313938386230363162343562363532653534343634393134 32613433366531373633393664653432626661393935343730623936373136393938643564333961
65656337326136623366383436666437313665653365336334316334333865306630353730373038 36646666623961316463333430363765323037643630303061383131656266616639613032343339
38316337393137313531306139613438323137383832343831343162633839336131313232626466 37663231323339666232663735616261323337646666626633316233633432393637613136663831
63393339316634306537313238353539306461326337333431316164643265336634383535323563 65616538393138316632376432356230623535323434623132313738356365613634616230626232
38656630353835646333353066343238613031336438346330666565393433393635333839386435 65663938326436383036653062623562393332646430383733343031646665353366366166626566
62663839373966653337666365383030633761373162623966336638373563366661366135623734 61343533303462663432323365303531343730633830623935633139653638366331626539363331
64656532623330363632393736663238633933633361346266313134303236306431633065383436 65653864376134653939376537336361326365666362373963336266353330313762336161383365
35383837626531623965616238653430376362313237383864303932376236366332316463306563 62306638613136313536303466653036623039383961653266313138626434376565353135643637
64613765643933386231376130623534316562313039643461623232393039346464653862386362 30616366323364366466613639373264353461656363353631646433383233343033653038313131
35653235666337653237636562313435303035303061313562616536663461363537303236373838 39656636346134636138363739376432336138396261376432396434626437343865666131303738
37643038353565636233363930613665326662626332346238386334633963666637343234306261 62313634666262373831623335353465643132316330306566386339663665366237333261613766
35393435623961616138346533363832643635383632633563656436303436623732373431306133 64663662613964663263623735653262336631616163313433363932363861326330656265396136
65363033363831623261373933343034373265396362613538646135646161333337613234363662 62363665623063356436383661323663373532326639363161363834383162323064356334303331
62383936363530636561623830626635613338363838383631353034343233333565396336343834 39346161613830316139623365646331376563653532396262616138396632643864326431353130
35646665623333393233613437353536323039613839393131353439383432363663656661643932 32313062663235383665383361643935363230393965363434636635633630353131623533646532
34306230363933376632373566376666386239343066653133663031333562303936386162356166 33333666633762623636323731633566363336383562636332386562316462646564663936366232
39336337373661313436356164616632333735333632346235663066643036633238653132313930 33313934333363653765316237353131356437626162353932663736636562626135346164613161
33613038653139393965656539613065306162313064626663653830643633326666323266386334 38303263326163643635653939663864323665383935393732306635616535646434303338353764
34313664383462326231316430396661363963346437343232343739656336383063383432383337 39653133303662363830343463326238323537383063313837346338626336366237363338656262
31303631393661663030393735656439316636316535383462383436653437366535636661643733 62353430663334313966343731346266336430323731313566323765346231643038616365633036
35623032656536616534383663323565396238623231646165313736323537353033383862333061 31373038623635333232313336306432653836366135633137353039303464356661323235353732
31386438343537376439373130646165633262626332623434623637653237383161363830393333 39653162326133653766353061343264386131616231323637366530333861656266373962663561
33376330366230616431326363336238653561616561633138623962613065646234373736663130 66666130623636306463616164313234366662393161666266386138353966303535383032313465
33356639386361653063653733393636613736336435653836323662396461323835396262346363 61376330633564616434303862356433336236636136393163636162643033626264396334633730
33643332616535656139636335393230393233323235626133323539386239616332393065363966 39333063363130643037376266393839633361376233343534323530653434656338363233383964
66303634353965326365616236343430326439623661666261666265626162636232633466333436 38386466373761663131666330633333623564623464633635343264333166363333323730326566
64303861386630363962643635323739333334316162616633316230653536633538316632333561 65613434663665636539383937613566333461333635616332343964626630306530373234613536
33623361343463313865313861653437313662363531323335333036366635623432616462333035 66336566613765373338626335393161316431643139616632646366623738626566376465393939
65373436303666646662316164353633353263353338356263613566666564393565653738333130 38636564336263343638323930363131613137386236643732646566373464366532653861653030
35306563653264323232343863353634343964333233363032313534646363386435366565656539 62626233353964386132343839366561653530666630653762393062663933316366383066633938
34373635313731353161323064313238616539616666316136623733313430333436313934633532 34633034653438363931373165343134613837393363666534393738313865633165333763623162
36393464336337353230336430373536323636656165373666653766306663376138353334643632 34303935303064343461653565633231306465613430663862333033386138613632333233343834
30376165663639353466366135373666353831333030306361366438323530633762633431346334 65326162633037383837656363333031636466366531633430636139333536353165643539316632
31336663303137333430646665393763383737316237336533663338303661346563616434356533 34663362306531636136636236333362653266653662336538313933623831613832386161636132
63386136396334363332663065393561366566393266313233616530383630323263366463366663 39616136643930343461336138643639346533353563333836396564636265383165643131303132
33373735623931623064646666346638363233653337616134623965366534646332306336316364 64396532626561613134356565363833633737303763313535376163653365303832313232396233
31373330666165396538363733343161383131396561306464646133363631353262313735353030 36373337373637613038666239313733643131643336616230353130643031343838343239633861
65313236386537633138616666333662356539613233396333393034336664616137353139323239 39393634396539386163313332373735376631323361346131346366326537666633336633666133
39653566363839623863333538633863363564336563626263333531616461393861373932333833 30626431343431323832316138623266623231626161373034643865653462383664623232346261
66613030373365616533323966373465633137656462643430346466656232663362386332323766 32653064646230333134643462653364663666346661663063646236666237626133663836396239
34643164343165373763336666643661653264346263636632303739383666323732646136333131 39646438316565643536623239303038663765396561643135373564303463313732386261356234
61326136393263383862313531323034343333656338333262333164613166633334633266633366 64653162323336613463396365346362353361393335393964663862313366643030303130313662
33346236646330376366393637336634643563653736646531313563306333323965663438653061 39366166636234383861323431613638326131323766633064343431336561323664383164323262
63396364343135343062323131373936663433626337613262346461353532346337663265386537 38373539303539643832363131643736623338343461383662383832666331373362306139373238
34626530636139376138313534656638363931376261306138353562386539333561363164323231 65326466313536343036646161383166653461376161646638653535383963643733643930396331
39383331316633333937333531303235616262396633383361386330386461376465393134303235 61623237363133613661366461353433633865613437323266386133306666623630626665663364
38366334346563613938303962336266663261616238633962333231383933623364336339343766 61353361626137633035613735363061623933626439333033623035646630653664363966353038
30306235303930396664303631383033313630646262306265613565356539653164313930346162 63303836643531336163663835643132326565346165643630646339313666653534663934396639
65373137386136333665393434636564303963616134366634353439613434333034663263623464 33353364316138663039623431303337646163333335643338323161363632356230613861346337
37363232373439643938326135333639373237346238363165646264643664323139663437393462 31373061316535306663333063313430646265356332666334333430366364616462343261613232
34353561396164656633376162306533346535343437396134643535356238396633663130643662 64656235646561303832616137376261363139313465316635626437643432363066393762393735
30643136343064323334393839376665666536386635346566653534666230353166326239313566 66383834306135633664363630363363313337626433366339643436323437626564393132313238
65393763353138336233366638373237633439346339333564343139636234396561343363376533 32343730306362393633343931393035326135313036393933383139663535623936383837663661
34303432373432363234393962373362316639386331626631623935633439363633396464643538 63333130633937313663656337303132363038633163373666643533633862313664326237393566
39366663316238633563363637643339383166383861393561343338626366626232336263383133 38303266343966333462643764313532333461653038353333363636626136313138323132386463
61333138356231396630613633346534396635643038383761626339386265376236356162623836 33383436333639653532643838333435656664373963366139656661303163643866663663393462
63633235313261653634313530313839393661373732363139353434373134336531316534343764 33363637346531323661653633663736616433626139303862303532386236306536356361306338
32393536376639663465613666613539386664663463646566613266396565646164653831393933 33363133333233623036313238333436303762343766323039623635303138363235366436643561
31663064643963383738313134636361613834643737653061353062663262326536313736326631 38323833373132343564653535316362396434376263386366306235646266303930376235323261
39316161383966333161316466386266316662646436396163393366393834303531663063613763 61636131646433663537626336613865613563386261633035383863643138363964336366623737
62313936313962386536656166353034376535373938366534613931393365636333386533316135 30663935316362623361356134336137636436376461346636373433653237646263633166343234
61303835383637366464326137366431636335393336373538383132646163376535306336363666 38636339353031396337386439636563363436383763363163383434633232663133333436393933
62376365356534336563333861363130656233633161393234643164613763623334323463336366 64663863663033393831623934643930373462353864356532376164636337653233326539663332
61393665313565653361353630353065353465616163393162353161323430373331326133383763 64353831643564623838373732363138646637633930333966323333393035616335316532393037
35623431343062353162343633333831393636316136366637623533373566303262376565333138 37623830326530303831666165356532363830356333666538343330303863303938343735376562
62326665386435393131373361363339303237373461363166653637353466306665613635336236 63356538383433336532376432346163663563343230363264353861633138336238333938383934
34343236636630303165393335383539343037653461666461346632343337356136633030373331 66333366343761633463383461616438333666633336363163666337313831626464646433663534
31646436656131373039376231663265636531373466616635346639613936383164396431313031 66383938366664313864326662303233633436316261633431333132346362333239316462333031
62356532656332353363653963646130336565353038636366386535363939656330363633623466 33383535336466656530393265633766373131326434303132343134376163633834326334346138
32333737386165356430366131343631616338616139316631356331376236333066626163643837 64643866343033316233303936393136353461376461343335323863366437303664323531333162
39666530396236396535663061313435613533316331376261326536393633323930643135313963 32316361666638623061616333366235383638653465336138613930313262636135363764383233
32366662613164383063306361333339626330626638653366613635616264396632323563663937 33333163383935316138363166363830313732343731343835323563373538623930303338393064
30336263373331393561366462663163396163333861653732383736613632623532646636393934 30336131373662376234623133666437656362303833623563623064366234333361646133643265
62623038616434613330653431633636326130633631356338626333643264666166373737343466 61623165636265313236633963663838326164666536613466663662663632656162386339336463
39363439323034303263663965356165373137326538313439666135383436353734643863323132 30353639336162623863616134636361643931386334656161313134626566666435336536333338
33303336376538313439613462303363303862333961373030346131623465343039373836613564 63666335323961626663313765666231666336316330313265663365343733393562386139366630
33336636326161646331353439323163353265313130393635336464643261646234346561633561 38303834316534323132623133653362373465313338336262396136633535343338313138366436
38386130376435383436356563306664386534396437313830386164336137343931663163353930 30643335653564336436623661323237326536343332303930663366656361623066663333323731
34383932323263333864346135313336323162646232633765383639363131323932343737643864 34373332633435316334356437363863386134663531326466306365646164623565313766646466
34393835306134656362653634306632353366663161666334343363626431346164323833643336 64393161363431343734383865656234313830633531323039616236313435346138326131616538
62633239613830336264383762656365656131356436343565303266613035626231393764613335 62623766626664326366653631643636633762373735343434386438323833663230633536643030
30316566316266316362346561636335373764623837653863316532336361353439653639613530 66353761333339633431306133373865316464386137396663316336316264323739373164323062
65623037383538396238646630623234363935366538343637396466633338346338386537396436 65323362663065306636366537326637353036346330633265363937303466303232323930313435
35303631623461633439633331313530356235643363623434343438383665313537663734336330 63356466633935666562356336353138636265633866393438396139326263366239396436363663
32633234643662636630653134626235396561646663343736633465343336613738386663613139 61656532633734313462313432653332666337373363333764393735616664663063323537336539
63333362306264616262383663626463666637663965316535303635386331663065643131376334 61616563393433393261653139313230666333333939356564303630356164306536346133616536
6435613063666539366633386363333939636438383264653732 39303537623364643966363730316562646134643033353866396534323830623038616563353566
66646661633832346130653638356239383061343236383463393632633238336634663537363530
64663361643265336364373530373433383733626139666465366461386535613563383134303164
62373332396333353365363638383263313537626634613663613361346439616163373665633865
62333664326662633862383338396237643734306466613263383033383465363230343461626238
313334653438353734633031356130383163

View file

@ -1,70 +1,87 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
65646130623036313263343431666430653966663232356233373965386534383234313231643234 64346339336236613837353138646630343462393566396332363332313238656631303263363365
6135633535643736386537393437303130666330386265640a373136373833663039663034323939 6432316633333965323435623032626132633735336465660a363238636536626264363465366136
31393539613530613566393431333635343532383763333563656162666631653766663931383833 31333132346163333631633436656434363163626461303839613636633061656133346531323735
6432653433343635620a623463316262343663306339353332326663343333666432633463633635 6632623736363963300a336131343963376536653430663939626664653439353661333834303666
62336430356162393233363030376233343735353038616665336164366362326134333134393765 30346264626161623030373833313837363264616163656463653463346363643266616264663032
33656330363532636533383439616435613238323664363966306431356131386438346231353930 34363835353434323436353837643931376363653137313234313032613434336134313131333137
64323165373638353132363438646139316337656266323666623033346131303966336638633037 64363932653164363936306631643532303433316235336237613331306634626161326464643736
34333635613766346330656463343332343335393835663966316639383133633566326564383736 63653464366130336139663462616536373463326139366364616533353837366237393132333034
34323663363533386435646239313866666431346138373430303838333162346339383963373763 62323736616139363539623038393333313539363662366561366662363230636466376566636465
35353964306463336134393334316436633763666130316366333062646336393363626538363338 36656536366362363961663163656662313632336435316362323733336531363761633933363533
37633033343533326631316631363338613266636539383630386137373461626239656566353834 36323264656133393563626232326265363032623930363735633235646266323661356134326537
34653266303437613332306266376338326533343861666330633938346435643561383136316130 37326531643932663032306232613165356362636139643432646330653031366436313032626539
34313739636130343665306335303538303365326336613763613138376135656439663562663862 32323031623130643033653735663163326231646332633261343134633632653335623139613334
32313039636366316562313562656662336563613065666662386237636636386237313861663232 30373936336463323963346265366538363931313466366133356262386130663964343437366230
61643330386635633339633230376565663035396136636364373237643238336534616436623835 38613665323433336361336130653862646564306361656437363233383433383332343039313531
64633866373262303736393032373762616437653030666264313636323539353233663632363532 32323138636564386137336262616662386565376633646363326664653762613735656161333138
34323939316139373032356632633165353339383665346435366361633261623838313937333837 33633937386263613734316362373734643534343032653563643866383034323438386432623938
33306430323334366436373664323164366661323139376330326534346234396331376634643065 35366435326638333934303964616365633839376637323632376361326564333236363331373165
35626538616263376437653865626161336435303164343834613138643661656261643234393362 34653562366339633039633762353365373366356437633934353532373632633738363561356135
32623737303131633863663731636262343063316663313565313238346565326436303863663432 39316463643564656137363633323435353163316462646663346431366632643533353831376138
37633734663331616561633331633833616232346332356431363134666430313435336134633361 33653033373135333761633138343039356633643261383539653937666633356430353637343665
61353633623032666535643561383264303766333636666438333038323966636566373133346530 30333336333661333837396438383163623838376335626130656435313738656430623034313936
36313566636337316265643563343965623538336161303165396337613462613530343864643431 33623333663966656230663434663765366332346531636664633537343830616532353835633837
64623233623664393237663130386366623065666532303633303964316331376338336461343561 62323039646162666131376233626563376134336336646535396631623765653466363062653364
61346430356238326333323835636465316438373266333864643162313161316264373538303338 31306331663665663333336238393633343365613538646664663963313233653335373562353030
33336434373565343761393632613632333133373135373666313439663034396536313766373263 31356636306232663331653566313362653433616130643961623362333837386639333636396131
38316434633461363533343063353139303466643834383836373636373362373538663761346464 65333731323866626333633261386361643738643133303837393134323239323830396432313863
65333534363937343261303336386431616236643361396264663532316163623438333533346662 37623531393433323166623364333466316134653439373233316362383136336239303332613638
33303566346161643839633031656538346333343233363839343733366564333735376264623034 38313563326435316564623732323330353663323130336334383135656361353131396135386162
33646566363365653639333332393632343530353339336461323765386133613539626466643962 30323861313030323835396233626236613665306265626539343364386239636130346362313833
30636332393464393264323736313130346566633461623331373530303534303835323333303266 64313736323966626539326566623464663962373162643135313735356334316333353066646439
31363333643834386263353065366635663562613165633038306637333762663230343662386666 30323065353638396438343963386166626161303936333766396238646563303033356332626232
35316533653465613035313439353263383736303530666366656539616437346435323365636236 38366364386434663835333864366530663461316537633065333331643334626663636231306563
64373431396131643363346437636465663566663039343165633863323261386462363361336165 61313238633063343463346234363437626665393064386530626664306566666465613031323862
33663738653839653064613561383863616463356139393032643730636336616239346434373234 37363464363436366133666234303763316138346436626535313834663132616239346331306638
64653164633961336135663162393362363362393338346232663163373136356430356464316562 39656439656136633461363237336135623466326665363365383561666461346537316432643635
61623461626164386436383838376664323139653237376164623933653063316566373437363230 36656330313366363766656566386339356362643361373932646430626163643531356232323934
62303561353164356665386135383963626531313961653936393736366237393032373766393163 31343965333265656639306439313030303864663666663266653734386337336261616265613435
31383262653530383831353061323237356434313135396332393563363336343466383437336266 66366333336431363738656663356332333463613364336331666364333433323832326161633161
61646334373632643161313639366431626134326532316637616134616165663061316533356266 32626162316235343863653032336437646539636435356635653037353263343564643737386434
35373337636464396338386133633963663034383363376666623130653531646633336431363862 30623932323138616365666436343861366237326665666262363632646237323439353438306237
33343739313636333537636462303534386139633764333563613064663434346462333661653466 66313933626338623336396532353937313230313630336532353639636363316665366365336339
33316138656238616534653663633236623466373964376337316166366232636362636230336361 63386366383534313533666532626631396665393239306131633766323462626361366134373438
32363639343262316164356361656135383062346634643734613062623962336464343735353833 39323462313166393663643930313965373639306233616634383632353261623838633665376232
62626335353363336561323039346462386338393163326466323935353865373631313965666466 36363136373133656261313539616162633733353261663737346134646537333837323834343038
38323132333465356133383639326461356162303564623834323965323735356230363938613865 32623835313138326439343362316263353335303463363163326266393837653762633130336532
31356461623631316237393837376635313262383336653931613432373263353930376466626434 66323936633664373163643932353735666663313037313062396465653935626262393131376530
66373339346537323338356464393737333236373366353831333230323866393061346564326238 31383565336138316234323265363762393365346466393164326566653235373462393233663634
63666263623665653533626236666531383137653036386566333735343734613561356335633665 30643735313136386264313362626531613437636434636639663966393539303466663637663032
32653835656538646434613732306566356636626531626130646331376130613636333238643363 66333634393562393336616562383935636337366532653639343238346166336163643334346434
37353764393135313164636466373036346466343163393835636265366330393566653335333234 34353032636130313038663139333934396263326338346336363331396366373265383631666434
65346230333364633038643130633666353639643839313761623830353162663932323231363261 36613531666533333064326363653738623961393237313039363536653634396265376435316536
62383861663832323733323366623130396561363166313637393935646237316333623733636234 31346363336563353835386336626539326364303061346162396233393261383034356636646634
66623962383533396136383733333230623838633966346162333438303230323062376335343532 33316630666435636336613966346537633930616166636537643938383665346333633664383738
36306133316136656539646430346338643065336532343235636339646339616161656661653735 64383030326337323031653737653939343961336532363031313330323431383963346636373865
61346538333262383363353634653666323533626530393839333361323362336434346662663036 31303561633330613836373636326131643630636438306233623666326637356431373539316363
63623766633532653232316436613539646433346235393531323738386233353830383037396261 38333534613564636331613538626665616634373266383965616435616338636662633535333261
35303538656432313561373364373062353531633332356430323233303735363130623262316536 35633134373438316134613039316266373263313130396238626564663736376531336537633936
34303134356135373930333338663966306237656536616365646537643937343262383634616234 36396463326562633966373531323963306637333533303163653838623464633030333363363464
64613434323630336334613537353333386636373363336531646436373938333136646665613433 33623264666433353766373966336436366234386361333666626137373634663737653966616134
63313438623564656438623239353930386461623534343464363462643131636464363834383263 35636336353135373038343466633261343333643166396564663833346331643637653236333265
32353632653930346431343237316333323139353632663330393165626534633939626430316563 30633963303234386462626264393630643466623239323032636665653039333333636639613439
38303538376231646132643262623966643561313161333462326637666566356662336434366462 62616564326531636461633764653930303163653230343933636632626239316261663065613937
62323662643066303532383566363432306537353131653930663039643033323536623966643531 36313134616330363338396238656631623863373566353363613966373039393339376564393439
66616634323863613538393338373132363063666438663335376563636335626561636234323834 38613533663437643632363436393431313066303163303663306565323961613064623839393264
65326563336331373138336561376565313965393136336334646437373632613131396666643762 35373963366631653662386366623832663665613336376466353865643835653939383163643865
63663865616431353535306534616234666135626339633864633033373032313230373664613433 37623762323661613338306631386332633465316537643061636136633530303630643234303664
36303666396435333936613866303366373639346166346433333362663862616462353039383138 31323862636263313339613730623865633333616538363634383532643561306639613662373638
6166 66336362613636326533626639646361366635343739656565333239353564396263393265613466
65353937626464353838336263656266656430366530636635643839356437303166313139393433
36626435646462616463356437343162383639373136393437646436346638343861333365616336
30366331363766346138616630356265303163373461643264316465306663346233363532353965
66623538383863316434663739353161313734663465643766626263396234353039313837373231
37396234306566326333393864303162323030376435343133653765623430636161623839376262
30306536383064336663666538663838343666333437633430643232393638633736353965326630
33306233373664636237643663653031343336306631666235313463386237313464663037393139
30646661643338633366353763366136316362396334363632623934393937666533336535336264
62326666326266333832373862356361316264313233306464633531303738396162333033303036
36393239663830323036333663313035393838346366313464353030383734343461643139333331
62373838373263303039313734376533306131626131363932623937653231343831303430633162
63623565613536363865636263663132656661666263656561316637396130356635623764613163
33343564346333633032613339353263343235333435323362363266383239383562303463373762
39316462663038356565326234666363653439316561613636353265363866386561333237336339
38656335306365613264363734326236663964313963343639323466353461313833313431393964
35353561646165653234313333636362356130343136653233373836306136633031316463353537
3137353065386166303163343461316633333435643039343961

View file

@ -0,0 +1,57 @@
$ANSIBLE_VAULT;1.1;AES256
65396339616563366635343034643331633539336437623130383531373833386134396234633039
6136346233383030323661306134313938373964656436660a376262333931656164326531313838
35393463363732626366356566613638386338313233656537643761306464383036643163373236
6164666630643661660a303463373731376661663431363439666566613036396163663930333730
63666130363430363633323230663632323531653866636433363232383663363737306365623963
62626664613363373531323966343132396531653530663262303734306137346130616462613363
36623631363330333231646364363938636166386436633366386362613465636233336436356634
63636662326164613164613234373562643830323363653161663462663733623830303963663737
36663437616236343163613939323837366430383665643637303034623662623565636166633364
34343836346539616139393634383466633230343430373033323239616238316461346232373163
65643361333039353963326330383331353866356635336531663564653736666238386432353331
65353832383666346130633439393764336538366639316439303238633865303061376136643864
63656262343637626339616664616363383363363434383633643232623661366661396562393937
66313864393361373531313630633836383964313835363434616366313137663836316132353932
64376538626336313537613333333939353933353138633733333465363266373636353830323565
33623261303131333535653732313135353234623033356664363866386230636431356466386638
62636262636337366334643338643138393831663666336136396536353535623831613262613261
33636434313438306536363430626532653136333338396663613634366533633764613732623665
36356462316464346464663238626531376333306435633939313062346435653637623363346136
38613034656637356639643834346634643762643232353165616234613233353432383434623361
37643165303336313736666536663761373962666162333937623233663061343933333235363332
34396461653764373639323734363835366235616465343232336335323135666338663032366230
61313730623138353532373736346237346266616334643465386465373034303636356231613062
66623461656239623633663864643632663337636265383934303532356363353433323936373731
63323331613863383261666234356433363435623434626564303166386535323136376331313464
33623262333936396234383938306432313132313065663761333765396631616331646165376164
36373335393265666337373933396332323061363435633831623237663565656439643261623133
39633330386132623236353131363831663766363439626266386165613530383736623638623462
35306532306466323061366436616262396566383933626264663038653562656533623064653033
64356433663535323337636234303834303136643563656536326135313839373136336138323266
64643632363264633033373231636464656361303364386635663664626235306465643031333834
63626536393439373035643062383664646234366438343435393539646163653035623139393135
65663634623738643539336635356566343433633066626330363362623763626264656437353032
38616463313263353637353864313335623965646239663962623937323163353834646637623432
65643963646439323262346137333933663534386261356561633631343531366637396662663634
62313832346462333737636136643633346530373264626139366134666133323637306662313230
39623835363862666634343639633339373931316430326237323466343363663263623763306165
31663330363763613935343631323533646632363562306133653839633662653231623634366437
33303131613335613532643936623633393961306366313465333064366664373065663534326466
64646431613934333730643162373863633439643933646532663535656339366636323161316665
32373861666133363638376231643734396539613735366530326237663261383261333161373637
63613730616563623765623538343962633938363436663862393538326666636232396530306163
39623062663933363237356330663136646664303766363132386233393238616434383563666362
65623061303065376231366531323833383231626262646138383031386565373532386361306362
31663533346262636538343533386433353563616430643366656333666337373038313838653165
37313433363332366430353433366334373234373832353466633062383734323339326238333736
31633930353364376361393061363663373034633236316133393961376662326132333337353162
66666637383632326333663461663963363761313363326662646566373563653337306130393166
34326566313465303862306631343831393538343937643030333831323561366163623265343339
34663932656161326261333038383230666161613035613063313235643630366566666239313730
31383038323639356366353866303064646434396134653530643433363438316364386363303861
36663038653037643034393835393436376639393336366535626330383939656536363132326662
66306365633735376362636566303231303836313063336137643032333264356334353130646163
39653762626138616162303039396137363365643232613438333534353061363862326438386563
62356532303136366462633762363530636335376532643830333964323262363533613139396438
37336361313936656265

View file

@ -0,0 +1,5 @@
---
dependencies:
- role: nginx
nginx_acme_sh_domains:
- headscale.polsevev.dev

View file

@ -0,0 +1,9 @@
---
- name: Copy nginx config for headscale
ansible.builtin.copy:
src: headscale.conf
dest: /etc/nginx/sites-enabled/headscale.conf
owner: root
mode: "0644"
become: true
notify: Reload nginx

View file

@ -0,0 +1,39 @@
$ANSIBLE_VAULT;1.1;AES256
30373762666235666235333030383830313862373435303263383263386535313430396562383565
3764653433633633373765653662646461326431393534320a633734626164323536626538613066
36323661313536393233376133326535356231326666336433396365633238633831336438646534
6466353735326531370a376466323837303238623666643066646562663039353934613635323632
61363637373861323339626234663263333765643138313637346537343236666361623135306235
62333539643765623363613330343534366639333965346661356135623864343831393062336532
31366364643836643161333035356539346364366331356138336336313239316565663637656235
32343061356465376262656535653139343036353165316662643961633838376431633138383765
65353635613263323162396461343635656565656464313930643938366465303465393336623434
36333430373838323761613965316435316430343230633933346338633433323237373636623061
36643232643839613362363139623666656431386638626665323533666564633536373766636138
65356432643936663564386632356433643361393837643537656337333563663362386665363233
62356138333061663832656161656636383964386235396637323836386233323138623230633237
34663438316364623534313332393864646439393964643435326431636437626364356666396365
36653564663634386231656138623233366664613337303865626638306332663565343734393036
61336664366138356237616337343863346530326461356663663335336230653334303861346431
39373831323361393038306134386463643164353766363732346639353437303436633934326638
62653638303235366238643430343962373366396633343832353336366533663831663536316337
30643561353338343239633966663033383830613030383665316631383665656136663962663062
33613634653138363463383433336564663862616235653432333363346633653034383831623763
66353036363934333232613631616433343836313530326139313665306132656331633262346538
66616465386431363139383435303862376231623536343838303730663264353563393563636635
63306633393236653635366165353062663039666335356634646566396537313162623635396636
62336566343234653763363962336361666331363936383334383035316264303836386631353834
64636266653066643538396639366361383133346136613866393132653933613761643163373335
66323433353136656664373863353966356636633765656665343461366261393537356138626130
64313330623337623732303666616161336564353966386332393064336637343833643463316461
66383636343137633330303566386636366630316131333863373539383734333639346432303835
61666163306164623531376233386531366533336139323537326135333530643666386565613165
61306431623436363535386539643638303231376239353261313034666538363838626335363036
36303262336666623363353731376464333634653730316666376132353930336662336664373933
36646166663630616335336136626461373638393532363264616330336165623066376638633865
62646365323762323463363539346464663738636561666430643436383964616639313939386361
65313362353237636535343363396566356635373333336666376430626338663861393834393137
38306535333331373837646162366164393238396261353238363762646364313838383466356134
35303463633236636232383762333539323938656634353761383839633838373463333134303064
35356636346136343235656631343961343338376639626139613739613233653938646665393133
3033363138663962616430383136333634303331666439313135

View file

@ -0,0 +1,4 @@
dependencies:
- role: nginx
nginx_acme_sh_domains:
- kitchenowl.l.polsevev.dev

View file

@ -0,0 +1,26 @@
---
- name: Make project source
ansible.builtin.file:
state: directory
path: ~/kitchenowl
owner: ansible
mode: "0755"
- name: Copy compose file
ansible.builtin.template:
src: docker-compose.yml.j2
dest: /home/ansible/kitchenowl/docker-compose.yml
mode: "0644"
- name: Start docker compose
community.docker.docker_compose_v2:
project_src: ~/kitchenowl
- name: Copy umami nginx
ansible.builtin.copy:
src: kitchenowl.conf
dest: /etc/nginx/sites-enabled/kitchenowl.conf
mode: "0644"
become: true
notify: Reload nginx

View file

@ -0,0 +1,21 @@
version: "3"
services:
front:
image: tombursch/kitchenowl-web:latest
restart: unless-stopped
# environment:
# - BACK_URL=back:5000 # Change this if you rename the containers
ports:
- "8000:80"
depends_on:
- back
back:
image: tombursch/kitchenowl-backend:latest
restart: unless-stopped
environment:
- JWT_SECRET_KEY={{ kitchenowl_jwt_secret }}
volumes:
- kitchenowl_data:/data
volumes:
kitchenowl_data:

View file

@ -0,0 +1,32 @@
$ANSIBLE_VAULT;1.1;AES256
62326630346634323662623536306130313431636136343361626661643839313166643233366431
3462353865323462346264616665633432623336353838320a383636396538616439366232633239
39363865646138306561303037613138336336306263323133616366633839336431306438333037
6134656133633561330a313931373566313933336631333764393532313862666434366261653038
66626461386431613462356537313739343230313530646236653063356261636663643737666463
30353539383965396161306466656639383566346162363466303433663634393461313832666535
62646231333537396331623938613736626265396362666230303334663639623739656637306636
66343962643365646636623764393866303438363530323038353565643063366332383334393266
61376135303931656664623239353265353837306133326664373062393666656432373336346562
34333331373862353732383063363866373635393464643337613234393137313366356131366438
31396638653938636263373235653139656666313533356235353832303437366437656636623038
36343233356137396561373666393962386536613330616236613661363563396461663862643335
30303764646337623430643139373430376132346536633366326234396236353532303233396331
35316366626436316534366333636431653037323239303062636564623865326231396138343865
62636630366634623935396165386266623133373363653536306232333436326132383130303166
32353935313639303139336134303861306561646361363835303561326536336465306636323731
66323961623031653965653832396661306532383835306363393135333338646565633335303464
66333766376162373165366161356666386430643065313961373565336230343632646236303163
36386237666234386663333261366631316164333165643930303962613137613436336437656530
34653438643031363430623066386339343036663363653365363662636533633832386661393636
32653830623436626232636135313137653234386238376564613931643435316562333836653766
63363832313130333462643032376266653331393265626239643439303737643730346636643037
66316639383938393537666163626630666161353832653066373963346365613661333637303431
65363464653934353030353731306164323930306534393762656563613430666630393634613239
66343866393833656630323837303664633765636561623666303261393666643564356362346532
62643163336539386331313032366632323137363133636363626433313836346530643738316230
39656361303363323535323762373139363030306630626234343931626639333161363032383361
37346236636236613436306465636266653231396562356136656433326263663237623635363238
65653635663335333063373133303362336665336337643235356234663330356534633835313561
35663036656638366336326334386461313663633662616531623738393636323563383738363734
636135366236373762303134633935303730

View file

@ -49,12 +49,24 @@
group: root group: root
become: true become: true
- name: Set default CA to letsencrypt
ansible.builtin.command: >-
./acme.sh --set-default-ca --server letsencrypt
args:
chdir: "~/.acme.sh"
become: true
changed_when: false
- name: Issue acme.sh certificate(s) (this will sleep for dns_sleep seconds) - name: Issue acme.sh certificate(s) (this will sleep for dns_sleep seconds)
ansible.builtin.command: >- ansible.builtin.command: >-
./acme.sh --issue -d {{ nginx_acme_sh_domains | join(" -d ") }} ./acme.sh --issue -d {{ item }}
--dns dns_cf --dns dns_cf
args: args:
chdir: "~/.acme.sh" chdir: "~/.acme.sh"
environment:
CF_Token: "{{ nginx_cloudflare_api_key }}"
CF_Email: "{{ nginx_acme_sh_account_email }}"
loop: "{{ nginx_acme_sh_domains }}"
become: true become: true
register: issue_result register: issue_result
changed_when: issue_result.rc == 0 and "Cert success" in issue_result.stdout changed_when: issue_result.rc == 0 and "Cert success" in issue_result.stdout

View file

@ -1,8 +1,11 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
65326333303132373162376233643737636430656266346532653861633262666363313932613232 65643762613331353263376538663762363566633233373739633564363231613439643136666666
3266353232663266646162623138613530656339653038330a376431303736336165333166633461 3664663263333137353539366532363732383066303038320a613239616263393161656131376436
61396665323263653137363233373838393863633038376466393636363231636636396561303134 66383831616562343064336236626562376332353932383764613063623831626163333339636539
3339646534306133650a363863646666303637356230363365383037383432313837616330616630 6639323862613938610a653861323635343864646239306530373537363939353137633366386131
63643839393766356539633638393761326165646139336230323732396538343735326563353138 30333030646638333364303737313537316436343463316461363665336232323030306134353161
38323064613066366433336165336364646566353763393839353134366334666137356163663339 32323236646663326332623763303336633735633533303466653530313532663334333039653666
333135303861396639653832386431663434 39633738663837663736303161373436633732346266343439663430633063396538343064653965
38616538396166656538366534633265613730383731366235343139346634336334326165613564
32646134633561646234613539356565656333356337643766336263383634396666353131306166
3962303462353333386634623431316236366533376231313166

View file

@ -0,0 +1,150 @@
$ANSIBLE_VAULT;1.1;AES256
39623865383539336631653039643033353530636532393935316365616466623031326365363462
3066353130616563323033376530306230643938306263310a363232633732366164613364393530
35623039356463363037343435636131653435343035303836306365303837623732353665393130
3762353866613862340a393864386434646664313433396237653961666431643633613538393366
36613232373632633130336333343532633139363536303130383737303536643036383165383036
32663366313733653431383766373239653836353936636466386364363737323835353861333766
63373830636132633766656162353133633463643938643131383737666131336139313062623366
39353535653131663962326164343834376434376334623962393566616534343865353730646366
31633632613131373966346531363564383862316636383436303239623862356532326234613137
66663430356633616166313939386366343661643337373763366263616164646663663061336632
35333335343864306162646533376562323533383265353537373363616137323464326139333933
30356432383838333965633661333064313833353266363763396636646136313130656237343361
31373166386466313963653636393064646232383034616330333162343336373763656561353232
37633032356465663636323563623231316666623762376565316634303238323865626632646134
38363437316331613737373361323066313434346436356632313361633836643430303164653562
66333562343338623665623037376236653631323038663766323033346362623337326537613833
64613861636161643832393261366362313932666132623461616536616633333161326532316435
61356339336534346533393135373031623763386661626338343735616434376435393564656464
33343061613566313166663130383038653130393636393564333438663235623064373132383732
35343466363036346137346133623330633138373763336138393233376336386634613833626362
37396466303436663234613538323738383637346539336137323364613838633566353163366431
63386266663064386531313130333435613835393463666334343464383536393132303731633539
39663131323535373839373230653235353337626462363030613538653664613863306436623537
39626466343430306364623430656133363564393932656335303062333232653335343330666339
32316333323233646565366662373161303033393238346535383039626534633531633237316131
38383663353733313164616461346264386461393133316566343432653136303638636438393533
66393661333864353162636161373965633435653362333837346330613237316633353037643966
63656136336432303035373233613133313962623065383431336236306461653264323634616161
39326231306431343130623066356235623832646431623834663035343131626434303161633938
64393962653761343663316137376365353731653134316235386436323963643638333231356636
34393735333362666436353739626565306538666436366564653830623235303564373536383633
62636434333061303937373031303738336334333935626261333231613339363737646138316665
32356339333861333532306465663665646633313731643061646465366162623163356430366364
35316138653533646339643639396436396338323633656566623632333136313134353836613038
39346638353063623531636232613339343763353131346361656562336335666663613730333264
66303231666238663563386534653432663839313264313064353039303533363736316465366633
63636534303361323765653533346665663961336666656265363137653731613565653938373830
61313339333436363863383036373936343737666161636135333839323562386334626136336466
62643134396638646561643936396234623532653436313533353439616334363537326234633939
64646238613235333563333461366638306332633461376438616662343838356334373239343061
61323433366438393038626235306264313966666433633639316633363539666632333161323630
61333139393565333965316435366163356465656534313766373230383763666531386634656136
35326233613037616632643839323336626261316133303063626432326632393462646662313061
39353933393333303261636434653665386563346131323466346637363431626163663539643765
65336335396335663935613862653031363639343333666337363139356365643832323234663464
37623361336162613736643465353839396165636637363436313961306637386434353237336336
39663338343765626638623263626338336335373264303063623039366638366338653065346564
36366532303639363437656333373231333136383762393532666233633031396666623138666262
30303934383335366630623265323963373730306463643635333264303463333864363739626439
63613039363162393032303263363235336431646431323935333164623261386239343562303738
61316263323332643164386663653034386130633662623164663465636466393931636638353031
32366230383066613365333938373462363238306538343236326162363632303337623965373330
31633232393339313032336563346365373661626466386435633331323236656366323866303235
63346563366337663831613633393538663633323835376165393131396565646134393763346232
36313438303264346430643535623762626262323965313462383361636163613466343666303234
63363730373037386531316535623764316332633338383064366233653666663739383139333933
64613164393135323831613066343631356139363337316433386466306464373130383536613539
32313535393833643937333736386462636636303633343832353137653735616531623363396634
35393866613936343662323333396564383464636433653665326465633734626338613663333161
31353230316639346436363732376138316466633463366239326265666265353964353238386632
36636562396463396538303739626436386532616131633636346561316464303536623830353862
32383339343263623832643161633636653064373836383862643735373838656434333861346263
37386138386335626164306135303538656361393362613165386130346635626566323137376266
38623364376230393635363538306439653262616636393063386339326661383463393166366239
34623861393833336164366538353438656234333837643032313434643835366463633639333531
30653462656232626337383866383634633363613833373136383933653462633932656331373732
30353963353334353662653031643735393336386137656563343730613261663933663566613330
66313838633833303836373763386132306334316562636361356133303535623834623466383964
34393465613236386631363230626538313338646234623635333138663266393061303536653637
64303464633532383237646234396631663663373632303763633561353830316637366334386165
64613037333531623662636665353739353230346462363334363534373865326237623032653534
33356262396430383434353463303830326364633430363530343133316331313131326339346333
36623730626130313763326562396633633065323538383666623139343338356135643463633232
30383364396636386135363466303564336638613239376563343364373238376631346239383163
35666164666663386437333661366661666633366234326230633930663939666265613937656537
38656262313338623537353037653966303666316264326138616365333239346166653131636161
31643966656562326636356332333866346638383333336562363262316539643862653039626264
61396161393139666432363639373063363037636537316532386434636535653433613033633261
63663138656365653833663038663765626632383863623531646436313836366634386535323936
32316636336239646162376238313832653661306466636263633831303763303534386333623764
37663430363163633833636136656532383861643466623730656363326261616636383531326664
35633464393936303263373965313637386238643438613832653634383639393132323339363436
31663462656234616665653461316532343462623339633663356661666537346162396439383838
32343733336361333563633263636663373436626462653739633165613866336362653531363437
63613561303430626165326466643630656537393137653762646239653366356565333165326339
62306661373165343038336638653763343436363135346361323565343730623866393633363361
30613136356537323631613363636264376163633866663738626135396635316362393536343263
38666333333965666361366334373330633939613263336238363737643335613230363362383431
36646236393134396335633534383438653134666163623535346634636263363965303634353633
35666564643237376364353436363162666563613661333362363735306364366433653565393966
39376335633432303231383732633764626531353035393338373738333763633263613761643633
35306135363435386563363263663337663733666363353238363962616366393563383361323138
61343031643837363830373066346166313532313732356139633531653762373732313137333964
32313635626562326463326166386263646631613731643733306330383861326432323163306130
33366464366430393732393531343234323363363237636666616432613163373038383162373438
32393361316239346465333933396337363066663461373736663662343636346532316666323763
31363135303964376163333231653536643339326564353163666134656537353930393333396132
66363231333438353966393364306361336232343963336232336532616230363532613263373631
33336431613063316130653132616130623231396465363061373338613239363166336637616434
32616230616561343665303563343963643261373561363330383962646430646264363537333935
31646237333336316336323764373739343961363966646236393538303936613762306138653530
39326432373231333433366136323061353438393730663633313530313264306137323130643463
32316438373461363162643838383164393666393066666131626334356437343137343062333633
30313938333662326330633431353738663463613564333762326538643062336363613463643234
63303466363161643664326433356438316232336533653265386535323034363233383735626563
62313262343966646163333866393261353636363931343964666634326135363337323133356434
63353233666666386564326334366633313030303236633863366166666530663934656235656166
37346538663535343836633233303662666238353361373565336332323637346630323362346262
65666335376533373137353236663866396363653331623566636162643537656635353463303134
33386439656162356630393433393262636534656666346434316166393533626362633564633964
61333032353565316130396263353765333438333465366531653766653062616466623461646237
36376565663038656536323032333135643762643164346635373963306333643538613030343761
65643635356637343963616436363432356362386164643638343933386336336131653564646637
34663363656664366632323862393338333063663932393137333564633633393462326133333564
33393232313739613534613666303535626635666230666234363066376465306166343964656234
61656136323763336233396466383338346265343766343434356566393664663261633839633536
33633563363638363364663738343262353235353839656131656265386331623033343436616566
32336232333464346234316132313336323764313165333731323835333462323938626232333563
64653737306563663861343332316234306532383339643766396339666262336162623161396361
36306132303139336164353566653865306336663233306434316464306234323066383364333235
33643830356563303839343966643136356366643765343631366234653835633165383630386134
34303033373132353931643132396132316339653939313962393037623131366562663031346238
30393036346532653530356665386665663034663637383364343636353861376361343739363132
65336635616565363964653635353132326233656262316334353163373131313933646233383564
63666333643133643262393932366134663365396333623930343030663536623436646630346363
61346262333265613162393637663762336465366236623461396534353435363436653037366334
30326635663232356665396662366264376466613030393463393432343565346631333932356331
34613933313166383165663139653761646563663637373666383835343361656535343363633333
33376361393735653866346663663630373063633932306363646536643066386531643937303062
39363565613735326364303963373564643137623131643339386362626561373538346366396433
39396161653633333830663731666239333237356337316534353165383434313935396563653331
66333363343133613861613034336265393362346131623736326436653066326333383064343832
63323934386636633034323965383034643437633832636430316265616663666531613233353332
61343330343633623035393136646335303764333739623130326434623633356666663330333130
63646338303663353532383564666430633061363061373434653233366234616164613637666633
63366431643965386235646565613930333064623737633733386563363165316538623966353563
34373231613235633036383837626432303134306138353666613235396637346635633564613265
33346665666639326131336661313266643239663036323865363637363639373763393536313239
62646236613330333935363534373766386631396337353639366633383136373538376230663864
61373939616565336663383430373034343430356630633932646264636566643331316632646139
37633639363038393939636135663265616266383135373034656633353138303639306361636439
36383736383236346336663836303637343466333039643862316639623935653632343430636334
65663436626363373337663561616435316565396164653334343833353862386563333532653330
61323436393539376161656634386661353930613534656236343439333434323262383339623036
35313033323666393338643364373464616433313465363734613761306639333561326663396537
38636136353761623264303565353161393265653038636533363034393735373433636136373335
39333331343232343633663137336535636636316365623433313165323331616438653166373565
61376437346238383965356332313037356636353936653131353134343938663962393431626631
62353063383433336334306231393232353338313439623062366330616136636638

View file

@ -0,0 +1,6 @@
---
- name: Reload haproxy
ansible.builtin.service:
name: haproxy
state: reloaded
become: true

View file

@ -0,0 +1,22 @@
---
- name: Install haproxy
ansible.builtin.apt:
pkg:
- haproxy
- fail2ban
become: true
- name: Copy haproxy config
ansible.builtin.copy:
src: haproxy.cfg
dest: /etc/haproxy/haproxy.cfg
mode: "0644"
become: true
notify: Reload haproxy
- name: Ensure Haproxy started
ansible.builtin.service:
name: haproxy
state: started
enabled: true
become: true

View file

@ -0,0 +1,174 @@
$ANSIBLE_VAULT;1.1;AES256
35306361346562643630613962323532653634613033353232633434343361386464333833626633
6362353364646338656538663762306533343166376337650a316163663232353035393539356135
33303439323031363438386230663532313136383531363734643230623039396262363131386338
3138323033633636640a653338353336353763636436663334633036643730363761623338363262
63663330343361633432316130313337653664656162613665643634353537626132353266643331
62626431636636373035383733383864386463393130326264626331616637343732353932313266
35333436656463363165313863376134323934633338613332306331373732313365633965666238
35343138333538613837323030656634626561656434343033633332633039663237623438363462
32363962353861396333663566313938313730333261636363343061373335316333613733393239
37356133376430306630386435323262396164613361646331306337656536633065383561306336
63643833336136643134616331353631393761326632656362663436623464353361393339643132
65613466356134613964386334363739323137336633613965373230643537356534643237636530
62303563376139393063623565663262383639613764363039366562653933343661306262393966
36386335343761313661323165396332353738656136306439343163316339383762653632343336
33303430363636323362633061383765333463663039313033626537393666616339303534633439
36343338353963343633643437663933323832636431313435343638613138393366363031656531
38633435323736393064313032326165326662623862333138366637353565636564643964666431
64646136353161363733383139643639303539306632626635303432343864326537396636653436
66636138363639326133656635643237383733613566663161313261373966343035323463663438
66613365653531636264616231303535623331316132663962663964383134373331313265623130
31386265643636356165313036303163366636666163333134616432616234346161663336313638
38313033366564363265363434623633643866326230623434336564646365353664306632326666
31663564353166386238613166303736643033393438363164353961383632313862383565636635
66656632396136393036663939353961326638326266653664663035393862636634643365613963
30393836663738393138383738656139346238393030363535333134663734613139656431646339
39643462386136306430633138636334343363663835383062383161623762643934326166633861
61633863356432363932653831386137353131363562663338623561616431646366623262363436
62663830336632373630623666653264363065366361356137633038633262626461643333316463
35303232353637616365303333646162643266623738363462326131303665376234636638393062
65353964613561653138646135363633383732346633383336623231363735386165366533313838
30313837313366663364643936633631323666396136366136393263313230353039386539323035
66323739393934323635383739336538343230666232386133346166383866376538666464386666
30633838393061303535353936643238613032306336633834313332626331323164616237326362
35373533303533353536393863353432316361323163393233386561316531353738666234653835
63316461356665323739303430613363373832626338643431386637386633373339313663346166
33313538373766623736643666356430646161383066333031646634333361363463666337643233
39626461313337333031363133343939633131373963616364306331366434326331633762633939
38303332313866336363623832633638376266663639626237353038363534643361616535643061
36363664363330366233653561396630303062653864393938316134396237363036333730656631
63326238623965386432363963623935363934623439313235643263323030373162643235353265
66323966383632656662303836376663316234346435623539613438623032333036373762613362
64313631366235373534383965333637643438363338613163656138333864613131353530333535
36616535656539636436326537333935306436616338633934643561643638353133373337663865
34656461616138386634613063306137386165336365663766623638643365366338616430303166
38663931386333663565393034363934386661613163616631646566656538656531343766373935
34613662656136343336636562393265343433333434313635303439363638646461313236303962
62626363303261333533653139313234363765636237343637653837396231623366323238386462
38313239343439383565363534313565363837323736663037663134353539616265336564386133
32666465393061333462363136356134323261653932343065363334396238356139393934623135
38393464656235393436306664363233623432396637373637663339613935313933613164633264
34363139313732323636616138663437616562323561346431636337646530396563313639346533
61396465383731333561666664336261633236393539666438663536383562646633363635623963
35653139386638373535393038326665313333623161623038376365353938663532653338336138
64373965643234396462393031643330316662343338363262336331373331656639346666653138
64343561633563313236663134386562313432333339633332386230343437306634616161326532
64646638346332373962633837636432303735316238326366653466383564663935643236626132
33663238316239393262326137626539633530653636396232646165366232643430306339346661
61336638626632623465343633386132343265343137643430373232376564633363376562363135
36333536313032663661646565333138313733646530303037623835353466643038643432663030
37666466393431303135316334396632613763656133356663373263643964663230656665323533
39363630343236633335346431356562616130643364376632393034303030316164313964383661
65633966356361346563636336316565333931636266366265353161666537366638663036356238
66326266333265643235363361346664653332613963663766666534373936333363386238303863
32616564646165323136313332653434636164373363656433366230376339663161383664316333
34346363336437623031343264616266653431346639363163663334636537613533346363643731
39613333346439383639623763376330323461666137323036366236626134623232646563373136
63363436376666353163366162633365613965356132623633303638316131666434643235346164
37643364623939346333376666316436616233313265396162336538303162616464313066373436
35613036336261353331613039313966356435343734313161313039613135383532656263323464
64353066383433346135616637356535333630326137663033623531343161313363363839336564
63336234376264306666343162393866376331303438356636363036343931366562363936643463
65623261646636366464366166653339666139313538643837616131336161323133653665363861
38336464353062646464613061663338323736613362373362646436306263383134663965623764
30616561323635306566643039303035646335373361363361373834313932646165643762366437
39353137623465626665626334326161303363326461373865343865373337393361363730666336
30323939653866653832646232353266363033396636386537396536316635353563333635363934
61383865326463646234656635356237376337373339306639336238613234396330666335393266
32633765386431343730623463396138313537363063323662383561616164613364373339623366
38353965366334356238303735633432613861353334646239326534613132333336303634663363
66646135373733646530376564316332376130313139613138353062313338636339376438313962
64646437323534316237643763643439643839393233333261383630313432663030613637336535
66623830613135663835373934383262626563653738356335386263616136663962356264653638
64643961373664663737366563323566646536313663323637356637383561316330366263353738
36353630376139373239313238313235313635666235653961633162653639323566633230303737
31363763353834313032326666343332363061653033356563373033323234383932626561306630
63336433616534323630636336376366653337346539343038643532333932383261653438653933
61373833643734346464346132643861663663336462356335303561303562363561383038303039
61653133336363303430346135666137656534626332306162323937303837616262613066313838
62363837373263623338653238353135373764323330613939653736376461353133373466656338
61313664323361306266653863303339303337363361623038363162373266343535376231646134
36646266346238376136396563326639313230313534326133336337373637366164343330396637
65373830623833623130663430366131336138623034613135326439636162623066613763643464
35666661393237313736353935363964646137626165336639373162663530623831613964636636
61363539303435666263626262623234616562333938643030343031663733313031323862306662
31306536393835316437306334323035393036336238633766643831363463616331656264386637
34383139343863373737333963393736656134366163353033326635363937646132386137636433
66636337343935346363396133396163613166383130653064353137636263353562363339653761
61323337633930343864306335306566326432393065393463363962303333383533333133623462
34373235626262386461663239383734313138613262373563303266623735666438306333323739
63663833636538356436383837336331316166326565313437333661383138363764306239353062
63366665393465656466313633323831643438626262626666303664373065633163323634366664
36613436356564383264323139383237363666373866636435653736303739316464353432323861
37656433356330373737313263353166326239616138373935356635633934376236313366633963
35623333303937363738626534323135623834623162386561626239336536386562653637363965
38393038313234663334633465646534343736316135613230626366396138393434313266643932
32373736306235643762663835613937646363663361393130323337303764633038383633646631
30366166366364663132303137383132316435633336643938623135356364663762303264306132
65616662663537663731643330333934363335326530653765653138333063666165306135313761
30343630373539303932613632346437633764633762613435663736393031626339643464383631
37313566333261356136333163313234623030393635333063623462633234326631336131646466
35343436386561626632316565356435646137633030363430633034623232636435393335366164
63356237333730303539363762356664613562393033646231393635393163656164613638396231
35383265323137633332646133396561396463306134366539623461396364623931373038613536
30643135393761383937313638626539306162336531323936323631373230383366393564343135
34346664616236623166343764363632663163643136613436633932663538326532653533353864
35363232613966323436363235343833643462346537666230363662646332366466643439616365
32626261343961396633633832323263333136643262383830383963656662353834363231653766
30623565373732646662373835373835366333616532376261383235633736343439653431363539
36653062313331326465363735336532653461333964656331316366353336336164336334323635
33393330356334646338663662616233613361393966393365663132666266333839383936323933
63316239613732663438356665313366303765393036363636633734666535633965373735663865
33383030646166316230616139373737663336323335393238353637336233346339393666666666
35666339653066623838313931663234393766663931356365636533363362323534663265386532
31366436643364613331643935663561383132626663623064623263633061636639343130323332
62366364343266336634316663303034366337356535643832323937663037336238363264363732
30306562313066323930363438373730346363303031306463643566323439333465616231333430
66656136303535656332396236396563326264653133306631373031633565313038336162343163
61306538663930643436643666333334306566383131396336616435663438653032386161343736
39336233646431663661336465373234376663313366386532343338303665613536373033613866
62633636303661343738333330633161633937333535336333333961326661313530323834666461
34623066303838653733316235663436666438306463343663343730313433356164646530346432
33316534376662386365613931633862386261343763303239343863623336323335366539326564
31393034616130303731323338326638636631613133373463383238383563363335323864333431
62393930633962623164633934383639623439366661636138393832383637303662303539626330
66616534623930393064626332663835333033393966393933643065653966303235643336323731
62396564346433303330636663383865323566346265663361323038623230383037666636306466
64393738663563393261623162376339666634393039623461376532363061313434373031326639
36313435663038323062336233343732666265316539313163366231633631326536643131366666
63393336323335666432373965333061333630656235633733646431386566393539333064306439
65303762346434303062383863616233363432656565653539336166663865663166666639633665
65396435386462653361386234316135643734656463333865376265346237613463613361353231
36326562623836613764373936393766393666313733623938336131323766316233366432623766
63646532656431613761323961313130623432356331303332346264376163663466613464656430
37396337613930666332343636393032333232656532396237356137383565613133346331663830
37383133336366393836316134646463393237346536663435663031356163613031663632373865
35373138306365636334653161316637333466303139646163333263363266306238336166356431
61343430326562636663613364663763343939383031306337323035623662353733366138626433
31316131383738636436653038306265633336616565316337356136313762306239623861613464
62356262346463326365633637383631393034666335643462323930323236303565376161656538
38323062383231633235326536393466653464656336366562383531333266373938396466313737
30363433636132353035373437613530646436663861653534356265363830376433396565376536
62363036383032346139356632303530326234363832653536323538306339353034363435393539
32383366353437623637326231626261626666643765623932396265343162306632363163376663
31313336376534663138656165316564643538313134386337323262313639656563356439643635
66656262653838653234356336343937376336343734623165633263373361613536646466643635
36396263383132316432613966393331653035373466636334393437336437623539333462396131
38666565313364343533373364623632353163373931623565343532323163663030306335613662
36626163383333363439643862653064303363393261383962623737386433353830343439633930
33326664653537623162346531623562663138306562626362323063386463366530363733376436
34346166623264393033376233346238393937656563313366326465346435353333643035636533
39623966623239656137666131666534613230363931393463393039306663653832613864643161
37353534393534343236343762373264353137396533356331663661393162653566646233396235
62303936643166303137663762306163383063616163656664616133636638383834653433326365
31393734616362633663663836326430373937353831613961636438313031343631663536316135
30363165353062653564663961313032356565656339653038386532363863323632653139346430
35373063373430643564616131373234326432633562623166396463643032613361636430663132
64303565313237363836323133386332393932336461343735353432653939333434633634653537
30366263383930386162376134363434306534303561396338633137303339656436386530616337
63323163663964386334373232396532343234326331363130643830386362666166383039333739
35653331393364313639356261363030303563323036373364653832306161616331353661373966
62343361353366396630333838323938623835366636616564393130313831323266646465333233
32356632323732393637303063623332363632356633316636383333353164393837383530353637
39386339363731643864316461333231306363393230663965623366643566663436

View file

@ -0,0 +1,31 @@
$ANSIBLE_VAULT;1.1;AES256
38373631373063363437653366653066376265613335656664366539303937643435303764363966
3836303264323836613962383062376333316665366639340a373430346535623166326538653432
62663861656563366162396333323136363364636437333563336334303264313833383035666430
3665353834363937300a363239626630663531356431396533626339343263613363373432346431
61633933346633353764363861316364666639393165383831636335636135343665333437363239
37393237663235666636353434313231633936313536393231366134643864323533366434663533
35616664386665646266633334663563656136366465653138313930656166663636373837663137
62616339626463363664376332313166636165626330346533333165306337613239623635343366
39353934663439373635643832316231643764636639326332656537383435653035343131306465
64323331643533363031333430616634656161323234396663326339663334666130663364626133
31373132323032376230303332373364316535373235623332343339396464306439303063613632
62333133613834366339616339633964623361356233393465313634666536373964626465346662
62643136366164656466636332373438343435373432333235303435343062303137346534356233
30383231386637373831316236633562623761653833633834333238646430356235663932393638
30646538643930623061396162336636326237386633646433663136356630653838313536323530
31666136326639616539663433383133383062343434326564613936663864323332663932616632
63613030343564323363363066363232626331656262636530303536633132653738656434623338
64643232356461396534306665343164363961346262623235633064336434373730396539636661
39303334353636343438626363663930306438656438373032633462323232396562623835353961
33666461626561363438356365393966636461383366363431316135363162653431656332666534
31306566643130373334646161666566343338663337363431353264303264366465623336633138
37313062333863316235616636663462663239643130306231633037323935396665383165373264
36393531343766373666383265363363373634383665363761353065623335333761343639333466
64366136663136373038386335346565316633623830306464336538616566626634363364363066
38646438623531393033393561356639616635393030386535306535626462346238646564386231
64353064393434616661623063636130336166623630376132376233356664663263656132316561
65313731656631353961623763313631636435333464613032643162303564316236656431303963
61643065336664336536613162656232633237653865396132663063646665623939663464613033
38313136353232386531663233363636633331656366306136616432616161336532373964353565
6566363033663537633130633065646365623665356531343333

View file

@ -0,0 +1,17 @@
server {
server_name stortissvatnet.no;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/nginx/acme.sh/stortissvatnet.no.cert.pem;
ssl_certificate_key /etc/nginx/acme.sh/stortissvatnet.no.key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/stortissvatnet;
index index.html;
location / {
try_files $uri $uri/ =404; # Make the server respond with 404 - Not found if requested file isn't present
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Stortissvatnet!</title>
<style>
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f9f9f9;
font-family: Arial, sans-serif;
text-align: center;
}
.container {
max-width: 400px;
}
img {
max-width: 100%;
height: auto;
border-radius: 8px;
}
p {
margin-top: 10px;
font-size: 16px;
color: #555;
}
</style>
</head>
<body>
<div class="container">
<img src="image.png" alt="Placeholder Image">
<p>Stortissvatnet er en liten innsjø i Lierne kommune i Trøndelag. Den har utløp til Tissvasselva</p>
</div>
</body>
</html>

View file

@ -0,0 +1,7 @@
---
dependencies:
- role: nginx
nginx_acme_sh_domains:
- polsevev.dev
- jellyfin.polsevev.dev
- stortissvatnet.no

View file

@ -0,0 +1,20 @@
---
- name: Copy nginx config
ansible.builtin.copy:
src: "{{ item }}"
dest: /etc/nginx/sites-enabled/{{ item }}
owner: root
mode: "0644"
become: true
notify: Reload nginx
loop:
- polsevev.dev.conf
- jellyfin.conf
- stortissvatnet.no.conf
- name: Copy over stortissvatnet
ansible.builtin.copy:
src: stortissvatnet
dest: /var/www/
owner: www-data
become: true

View file

@ -1,306 +1,306 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
61363564353331636566336262656632663963313263626139376638326331613564393533396263 37613430303966373261666132643933623163613231666361396134326564313062623465633632
6233663365656236386635336330663237643638616432390a353439623732303330323334666639 6133333938623562633861613038663664646166353064310a306432633930363731633638353237
34356631353765346565303663376562656238633331386339383930346464613234343332643532 30333964653735323235346330666338613532306166393561643633396632336334366662343637
3064336637303436640a313432396139313339323532306430333261633336393930633432626162 6566353936326630610a623132623262366338353264346338323062386437663734613232633834
66616364386261666161626531386431646663393766336463313334633465383466313761613232 36623634313932366335383537333536353931663639626566616239303964643963353934383137
31343162616166353034633664626163646363323830323834373234313732353566316230643731 39303266353537346331353933366266363962626531663066623164376536393863316134313166
32333334363132626162613463646536363761646433643837303763623066366364376661633631 63376634313835346161353239313461656662343665373930666130353365653130646264626365
38303332363032656539636331343634623334363732353036343036356465333333663838666630 66393764316331626336386361653131353038643034336661663732616661633132386231663734
61613132663236313834386561373064343034353464643633613936383364666130323031366465 63313166393466393839346138643966663966646538653331313863363434663837363965333436
35613336613664613464396435326232366135613061313437626132346132633938363836626539 34383935646233306431643065333231303931343665373332666162363937616537366630326333
36393936663163306339666136396636353462616536386230313737623862383230353862656235 30656530636135633436303737333866353362333133306363376534633765323861623630356465
61383036633066623832623962646263623662626133343463396531376135313133316130643439 32653937613464326466343462343837666633356465393861666136383964396236333464613637
66636639663566393332656465353237346663613632316563326438616431666635376135636139 32633332326663333437306637666233373831666630623236323764353031666637626162333933
33363838643237386562363034373436333835646235366134326535636462343232636535373465 39343637653730336366343432623331316339623232643332653031346535346232633164373564
38663939633837373638653337343339663839386532643739643464656331636337663231663138 38626632643862616235356331626538326339323939336131613837323863663830323231386236
38646331346330353133343734333034646363346233363336363738356165386135306334346565 65386265313834666638306134306534653362626235393064323064313536313738613335643736
37616330653233303864663137343561643833373363633433613737363961396665623264303266 34666562353337653761393661356230663938643361623636343764643062633136393931656530
61626238343562633162323632353030663366383463646536613762303635353365373638343564 31643135363432303034323031313063333934316161363362336561323438616439333130646636
32623138373233663565326439663238393531396334646234613065623766633839346634626166 62613631636561306566396132386634613137626432656138386639646334336232316132656131
35656665646361623131646230643861383366313239643732656162656262313466393432383264 32353131333761313662363763366564316533666432643866356339343866646166616239323537
64663933376137623462303233383038613036313339333433333266346365613764396161383164 34613365396330656332323539323835663236383033323434313634656261346661663230613132
34393632393039343730656334613165396565396365616165656437346234373735643032613431 35396366623466306633343266656232363232616634356462313635333538653331356232303738
36663562643966353234343838393634343066373635343030643832666364393030353739393037 66326330356632336564366330376535313237333539653461393030666637363834636136353265
34643937626138346236343561346466333438626464666664613635386636616461343935636663 38393566393839316133613862646662303933373166326332376538623531353537363739376436
38616363633031356663303132343935616637306333343764373731333133336562323831613437 32666133363866343463323262386530303739353635383766643031333262386665623463643234
34313336656265303934356135316463363362303538656461386133353762656136636536313465 31626361636463623332323761346166613431313861303538373666663833323935613866333664
65633932323265643232336139343063613565313530613962366638383435666135633335366439 39353539336634326537363661633839626339356639663738643936653831653734333539613161
34373532666333653661386638383830303335623463643139333032346538333137323935323666 61396337356563323961386361643065323661633963366238383665653634656262623666326637
34363837663537366238613566623631353261343636653236376636363563653266363361663837 64663035613866623036343535346532653631323432623164343936333264323332313430316535
30666538333964383431643766616430343131383538623564303534333738363038383537356663 33646366373931643936373865383562353830353866326665646365326431346435393265343630
64636561663865373331653031316433373061303933386465373733386134316234376365666339 37383934353964663035623530646339636130366233353033363662653034643033373761383931
62666632356437366465346139323933666662383631613364363938316564343734363964656261 61373164306636623361393866666439626334663065613730623834386562376136653737356435
61333662353162353362373465303530303164623564373734363237656561326138623062666661 63323037356664333836323864386562323138623735326538376337613438353664636138653336
30623438623034393464653938393237613931653731386563333939616633633736386535363637 61353764343939376537356636316639666439613762356562333165336231666539623433393231
66656366653638393566396639333065356361326466373838343038353664396631393034646563 32616330373535366336373735636235356534353262333561646261616238323465383664303036
33306466663163393435386462373937623932306164333730643332663436626165623731303163 38363932336633623763666134386565376238373137363239326265316434333766303739356465
32623130383064383134306537663565636464653434323566373831623938313837626162366563 66633939393035646661643130383935663838656462626337653665303339643465663530323461
30373639633439376436643535363233636361383665386535323964353365303537623937313930 63336436653365643430653834656239643833313531323031656564393031343331626438363431
62383265633065306537386165643030366435323461656439323532316337313731323333383637 32643162626536626563313365373130663334616333316365656435333636333736323464383465
37333364363130376538336337356466346439303039336462646136373061363862336366373461 63323637343462323737623063363263663463323064653862376336346633323735656464303562
38643035366135386663633065333563343963633131393664376636353332653337633765376261 30393234303230613436376162323664333030323162396333626533623865653938626539346366
62316339326331323831303461666130353266396237626232323337326662623263376462333564 33626233393736323130663161366363616635633432666630313736333832396466393662396132
35363664386239306366316431656133663666623464333036363334366635333132353665373836 32646337346237633936636332393636613539326266333534656263373234343434336561666139
64356631616365363730303164393064363432643031633963613262313930343939616132663231 33643261303166313436623931623236346437643935386239663564626661396434653130326232
32356561623964643930366633303235323335303965396331326230333265666465363733666435 62376535656133383261326634656532393933346136626162333530326439393530343731616533
36353033623564376635656331343661306466323535303861386234376530623333616334386261 62313031636132643032616630626537633162316231316661366134613439636336313161633361
63316161653635636238333232656563323066656533653061363465626664653337356630613564 65343730356634393738336439656564343730626237333633643635343331373233633936663031
63643839656662656632303032333063373961363765656265663530393965313265393835303130 39336533636135316166633264613030643636626136373132306233623432363133656638636162
65333832613462613163636335616237393166323464336634363135663333666532663134326163 33386262396339383063346166383636396663663530383234616230623261393837376335646631
33393162653234643536333164616139346230343462353831623331303038333935653933373932 37313934373631623938393535356130383531346431336335333563343338306537383630663962
33643335356534643965313636303238306264613937656137616536646432623439323230343462 62363234653539346361666438306663633630633366366662636330323162646633656461616335
66323033613435323961356133643636313337663736663564376331303735373538653236313866 39373362363433326334343033623333656663356631383561336330636266393161656336386135
61363861663834643630643864623066643631373566666530633765373038373334653937393566 62363335663563313264653535633461626639363966663433666566623438303536383463313737
62313531323437313638666235316435616533323936356362393463613236316539316633613737 32636530616261326636363039393631616138376132303265643334346462376239363966393538
30333339643235303734346338653531316164626635363931383238666566643633313664306663 33303961333161646633636137646661323133626137363032306131313335306134353765326135
34643166623136336237616538366133343037336161663132393534373764313064626362666330 61663934313233613164643265633964333738393362373832303534633330663131396237623835
65333330623039323965663631316563303863353464376238333334656132363430653830333031 65356234333539326230386266356239616364653833646135356237333231613562666363313964
34633835643565343636343032653137663562616431613861383662616335363136643431663631 35616561393462373730336636376662386339633732613833616532666166383232303636613534
37613334333133613362623964656662333466616435666634646632636534623436383564353636 37393932343939613261633666353863343163363665666133313863386530323730636636633732
31343131313833393032633330313961616536353038653564366335316331643638663638616638 63306264353464313334623436343761333034656339656237326131633362316537363434623664
33396532666630363665623863363935653739393264656233333066623537346561313263313537 39623065663763393964303462613466373738383538636534376133306133343134376333643430
34393762333837306265666464353332663761623132346666386632646163306565343336313134 66623438333363613064373131323861383935323931366666343462366330316561343365643137
66666332373537363265346161373936303063646238393461646238616631333538616539356631 30383734336433313737663638323935643931326239323939383138363164313237333965613063
37333435363133353663353130316339383366316331653630613065393862373363303539316534 61383936646464336438346365303136386462363566323965303262386238376466396130666637
32656261353666373639376266326530356335386534333963373338363136366230306163343933 32376462663834316166333837633564383237616564636161363466613639633739343963643134
61616566643839303133323031336163306662646662383462653538613135643466663063376634 65666566323136346639383631643334333561383239353062343533396636363061643933326231
63653733343133616536393264396666396565326264646563303833616664356131353934393334 65303835316164663733396433333530613036646334643233623831386237316435626364306433
33306265323536356636326537623266383338613662656539646466306530373035653730336233 63303465313262353866346431636566633438383764313239336561316362346135396565376339
35313530353364383039656262326562333935363861333365363339386634646132343632626264 63333337386164316139643163646365363631613664646434666562383336346262323464623461
61373334323261336330623233323665376132373636316263636234326264343037653631613664 30343661333266343362303066353237383031323364666334356561666435383938393433333934
32656431646637643262356563613463626330386234323962666235326664313764656230366632 38313066343666633039393338326133386336666533313862633163343731306337316337373666
39656430666661613134663966333430646161366333326166303365396332313364633961323862 31353663333335613838316263393433663062373364326534623966363631646430356263383764
39663730346562666161626161313361316139333361393963313739396463306338336537663061 39613661386236636131626634363065393466303035616562313931626335613231653930366561
66383230343439343530633339393838343031663332323434653338343664656236333735366234 31376639303039613634646261616333643332373161303330353937386334343534326636346333
33386535656534383236636130373038636439313761646136636136303863306137633435386636 30643066613336613266323431313564303438326466303831633463353033316362653462373065
39306361636337656335633831306436306535343536396336343539396461346335666262393331 39353139323630623765626335616638316665343638303439353934616231396535326338663965
36356238646134363336303833343636346131353562376333626362323732663165336366326237 63616235353464363431653665393961633338393232336535306265393436656561306462363130
63623334636661366631363664313161356631653230303933336261373865336566326335653037 34613366356666616336616439653631386130303161373439336461313264613331623535316364
34343936643536623731393430363066636338313130623466376536316437356238623436373038 63626533346633626362326537623936636362663439386632323666623736636135666337616136
63363732653062356438376664343130356638306534343664393465346463333163613462366432 65303163393762366363636262366433383134373537656661373864646532616639323233323561
39373731626161653664333932653161643132623966323533336361393236383833633136663933 39373630353733346134373862393334636339346634373365356639383435663966363463303337
61343434376364396662396532383562666338326164336634663039303436613732616131356561 37653834363663343361663939353638613964626263656234396366333265353365363638323339
64333933313664646133626663386561336665633062316464613865313730303137623835323537 66363231626533656537643139343231616430336135313730363261663239316430336339386262
38383036656535306566333761396634613139396661326337303961353734363630383734633533 31663432373166383835666332333962313261386433336163356535663762336136373937626239
38353166323533653563633965623638336433306536333132633138333361653663366439636465 39303136643562366433376535363533343938373133343737333231353364366162333132356464
38346662663933623030326466353734383933383862303235366331386333353231636638323133 30636139313831663339333861386165346532666262386461633738323030313237353266623835
34346639383264623438393561616534616235323966353336663865346331616166663039306532 37336362343633653035326365306165303335613036356236393136386363393139653065636631
38646636313638663334303138393138653564373665646432336466366437363364316130633732 62663762383634326535373831366430333363353966383039303631356164363661333230373963
35393761623430383930313238633132326136303933333737383831313136653238306337323937 31643663316165623363353963623163346535363932376631633464313232646661646366396264
33666238373930333864373366343164353530366131663933623866663137623338303730636264 33383163666537306432643062623631323133316261613362303732303036333331636431653563
32393939636437343739396637626136303166326235653836643232646361313837353739386433 34353363626533343662656264303961333865303466656631383335373964303266376134383066
35316163663763303234663938356638626263363530366430353336393133393034386530613865 61383336393135303635306362646165643437316530636339636632653336303436376431323534
34376136633161336338666539316637646335333038313161383062656334656566643135313134 35373835333637346533336134313333653139623935626361636537353635303262633139313335
31363765316234373239313338633362393134336336663032616234306530623138623564313261 31613235396434303366643733346631343830653531646332663331363130346639643966343138
65626237306235666330346666636163346134643237346338373735636463626331663630643437 65653730623565373733336439643935666262633064373836646561373464313430613335396433
66636339363666633632303234316365373565623864646265356636386261343262633935663134 62316438366463633339366437623561636337333235636431363466303264633166616566643536
32303230303965376539393139376237653665393062646163353237656630653133366434663330 61623864303865363434356536656665326635633066333037623461663165393965323165383463
36623336323439363966316466316234636535346662383536653262376331653663303031323838 38616466366135656562616161613933653534663162346633643737396437386239613438376233
39623736333237303935636535396364303466656637333838663663613964376139336434333530 31663834313430373937663237643337353435633166383030613639366238313862623336313565
35633265373133346661343135646133643135376232333933326265633866653164336466353961 32623233633664633839366461626637623064616330666265386334333738336434646166343830
64313036303033323263623536366133303637333039663464343464386531373034616338636135 66666261363137373632336432313366636162383430613832306538316162363635386463626339
36666363396135626461343332656236313232656364613131653635653361336661396536303337 66626533633232663236373135323737333566313961393932396134663638666335613835316134
33633835383431633633363461363534303533346334306230383138653035656534343332666234 36643461353861623261386536336661633730666566353034323634353239356133636535333266
36623061356533353533363537343466383965643664343762386439336137343430313538323334 61306335643064313838666462636133636538616432303162326236613337396136326431643839
63396663343733396330333764313838393236316232343465303766333531363235656636626230 32303333303663353662386537626432356230613464306261623766656237376239363436313135
36326666623364306663323461643437613132336466643837336562636436386530626534636435 66663562386266373539646636316537616463643935633432616664346535636235313165363533
33653431373564646665633633346161386332396562663164383330643963613331613335353164 31383663366233356134623932306662303331353162363538303138326535346632326561666364
31306461663335343632376333336561663961303864643831653239663434366466306637633133 62313230323439393338336238373162333262613430393431653436303165633661663162636461
35353132316264373965616132626137386135646261616438303463306238356231316234323265 65306233363630663163366433323362613062386461323961353735313566363366376135393232
39363234613062366131623236663365303731623735333533356566643764343634306239643266 66376435343965653036343766346562393830346533303437343666613934333032343732383764
35373439643635653361356238333135303532323235643634383130323161646535336661306130 35396639653836313131643965396238346561313637323433383238396638353461626261343663
31363765626236356435663038396239303232393138316261306261646130356130663034646233 33373632323865306261313866383763313931346166653463643062663864393234393262373062
39383731656564663634316431383638353732323133393363633861333665393965393336373461 32323834343232613764353063343335626462373965663630663239383330326436326633623566
65636563616466653734346565666335343939313336653035386431643032626133353462366164 66666333616265356531386262306334616632646132386665353835393263303232343564306533
65306531323136396530353064343462323265333931346134323234366134626263373363323738 32303366396538653361636133353564343730326332393863333065353835663066353038383662
36643532643834653837623265333365336534666434333738386266326362346433356266333133 32396562376635623365626239626430396564626265343938636534623532613435343730656566
30353333656231386531626633373261313534363235383565343334373136656632356235613333 32353531353336333031336133383534643939653461353130306437303238636565363339646365
30333934323463353739356237343264393239623833353639353938646339626231323364643735 34383732316630633965393734396638626166303064653437653332346461633464393037363832
61633931343335653632386537303765303365343531633564373230643433326434643130373036 35623963336636643164336262636266396235326365346161613135623033363332663639623361
64613162323935643436386564623831343435353239626638616233393963363937306135643834 31306538633638386233366638623764633466653837356439646231376139656564306635373263
61303737373031376139666631393132343835613263376466663530646239303038643133633433 32383239663238386539613632346263346139643436656436653538636466643564653637393064
66343465343565656463306262313037633832353064306361353165666433623561353266653031 34323539356263353064396135363932663664633232366666613665336339353966616666646264
65663931393132316466656130333062656163376263323133313538623238313965303866613439 34653632313030633263616561306464396330343635643835303732376364656163613532633432
63343235306361333533366531613935663361313164623930383834326564373733633966396534 64303961333362376535643230643834336166613733343139323530333735313264656539613837
65343461616637316638653738396239613735363936616563356539393166393861373437326565 35643331616136646339643936656138366538326539663861383133316264376337613765353361
39383363363966313065333632613261633362393531633566363362386365656136666266353437 37646461653639383630313830353034353137636238343262313764336431653533623964666435
65613638616638363038613831313237333833643233303664353235393066303731643366366434 35346136643264643437376235363464313836373933366536633061366638356363323734343934
31376164613232616164613065386337666238303935313138666333366439383265326461396439 30363066363861633562333261656334663833396561653033653430343839363735323465366661
39343161333630313230373536386664346134313330633537663461663032316636663135393564 66313161343266353963373265356131366437366662363630303434653437323732373830636262
34326661393637313631323036356232663336663634346266356138626232613361343235643032 62303432393639393730646339343638343438303930306437343062376138313037643131363866
34346438663536393537623361333062643837323062626265323235383461393761613439313664 35333030386263646333656538376536303530323131626539373534626332646139303836313431
64336166666138353763643331313438656361323833356236393038333333346265366361316563 34356437393833643762393137396533396163653434343461376361376563613961366666666238
63376463343737643832353166616566626530383837643035646238643463653137646633336237 65306465336162633361626164383131323135356463313039623036396166656131326439353335
39326233613161643162313933376130366264663931323433613331373730353065306138643537 36346165623664633864343662393231383364363639306435376462363863613165306232336461
34633734633262656531353936323031326163333566363464353166323530303536666236383932 64313362393365393634386239316631356337646563623361613038346535306234646166663331
32333461363337356461333362303963386134373864366239346630326339663034303738656363 61363761623334363332363237353437623565393235633436613333373965363931666361386135
61623638643664656237646131653961626136333533373462613336376364373230613961643666 38643361393933666132323733653666333634643336663431376566366633396466343335613265
37323231626136393039623232363761663939353265636439363065333135393330303461663265 33643137393363653137316432373334326233343436303263333431336137343062623161633333
37343532366433656164663737653931326538643139656232363231303965303964656261623338 66376334646365343561643034303665346537393963393135666434396437623734373434303331
38323838343732326634653231393137333939323731613534363433383331396435633937623366 33613861366336373634323933383763343930373735653132343633323738396237373339376537
64326166313832383533386665303964663065316138396639396438353638666637633636313338 64616232346164303932303231376163626565666539643061353363663265646230306136336238
31626232323933633763623630333661653735346336316638386432383164373134653863626337 62646562323034376339643866353363366364326462336366646332373664373335356165373936
35326138613038313138396565383765616463383033633564643830646632313839316436616136 33613066653361303134313239343036343932663930346663323362376431353138633961353364
33353537316666663866353238656134373466643030343936366637373435353332343735353236 33633135313663396265363736396364623466303030623565646535656536326231653264363765
33643834306134313036643534303831336238376164333636613365616539316538346535386337 34613062656135633164643630326534356561303434643239306562653033323032333630326433
35386266396161303535626538643533336535363338306434363534393263626464623963353061 35613334383965643632316536376463646464633937626131393462316361633566316230613162
65613030646437393738306436343830313361353466323062323364643430373939333066623332 64363330623965313363336534353739646338343637366264346166636163373930363365633439
62356334386466626438383835353764393863343431666362313339323161393364636264326130 36336366373466366562383866366262396536306465333534653562366663623136356133616139
38366534383463643130653932353863346462306437666564393036343835383430653931303237 61613861373639613835623831626331353237336536333561396232646264316337643062653137
31323336363430643638616637393531396638646663323662343134333466666663346530613664 38313562656564623336303931336364393538353562643537373935346131306136313162356539
63383532666532323232396565376339303237326464306330653932613962313136656635383762 33613762643466333639373533383065323538326630626566646132613763626463663536666635
63306636363462323931636233333639396438383535376262376230383038623430356632343563 38323661636538623762386632303134373237383239616266373130316235376331656462366539
32613135636436613331323036643832653362623235343864363466303263373230373032306337 35656436613230373435376266633163323830643031643535333433616438636631323564316635
39336630333130316439393239336363333763643565366165636233383265613638643364663262 39636433336666376166346362343239373236396161633434303065353637323364343766383733
32363337326261376231653066396533666435333232643136343839356662333331386639383765 66376530656630323837393332623037613265396335663331633638636635633032666363316136
66356537353538373465303738633830623162653335666664653230323830363837653466363135 65623130613763633764613433326333386265353365623431386364303236326461363933633363
33613239363535653931653864646436333635393939383333386366386265363435303763616536 30626362326538643039326630303861376639666139393238356339393930633064303763636161
36333265376664373132366366343439613239666530653631343836666634363163376264663031 39633566373737316361306634333361353435356230663964393935306635386532643734383462
38373566613832613865316637636538633265316330303239363335653665386466643735613839 65616134633335353738626630393964353065326538653435653963343039326238303738313666
66653863316236383964656235306437646130386434643361656130653132396637663035353631 61373963353361366336653237336431653132333433336330623738663364393336383835643064
61363964353732663765383433313634633430656437346230343561396339346461313961613632 62363465323836326333613832383335353436396263343739373364356132626138653832393166
30386338383230313564386331356263353464343137336663336438333562396635373935393230 66646535613233656632393562383938646665613762373731333639323837336438613063643334
33303031613837663539643132663735323662653231303137383361646330383333633962643330 32386264383236333664386466636234663238333761633963653061356266666464376136616337
34336236613131306261616338636331623732666366353961646337396434313932326464613136 63616239376533393634353739386262636466376235303263343864366633643366376233386166
39626162376465626634343333353566303261663638653766363362336136623861366338386132 33356534393865643065633738656264303961333464373062623133666436656532363138396332
39366265333730326439633330396337623635633830346361646364396332313932333433373333 61333932656661313963663062353836383433373839643135356631333261333466636663386266
62613837336462313065633930386532643865383133636433303362376231313030613264376139 39356438656362303563633130336266323361636564313731373238303034303961306465616132
30613064663637333636656437303439303263643236376136666266303330353634616630363533 38363963323839656262346135376534333530623862646430303434653465613762353139383333
64366631353065653561313935343530383164643235383838346338323236373930333331326434 39646433393162663633663562636330386634636332366532306363313264653038656338353263
32386430636236393363613962343065663361313661346162376162626530383763346530636535 30393161313136323661303063643436396533366436346365653736366433353536633331343734
62353634636562646431646236303564363334626264383566316162363166373264346533316364 66616138653834396430333635373834366133393961646630393231643730643061396262303061
39333666373966366365336366343862316662626638393463373833303962353130623933323833 30663665663832336565636333663231343238396130346635393431653430383262326463383463
35313965363138653730663635636264633536646535623366636232313666393732303131353233 38306366613061336566313031613266663733613938366232336265353336636463306331643331
63313030396236376665646435653362383936346562336464666265656164663866363436323034 66383362396664363633363936306531616333616131613363313132306663343936313662366537
39333230383233633133633233326166356666323464633036333135613639303666316534623963 64326139643230363965353336313138656164653365356436323566396634643266346430346230
30623835626266386433343139323532653266393733663566383335356162613436386538636534 31653237613537313531383831363862396331303636323737366338616337306538616163373261
38383765613338333862363233666666343165373365626633623230376339313035643732363562 64303830343739376464623766646633626239303932383232623463656537613965356438616338
35396131336261613332316632343066623135613738623565323131623562313835366139623665 37373636636561646236613966613461326235383631333862343732353334353162306234386631
35616635313131643639663237323165316433306230393035386166373533376633376335343536 31383937626132363438316463353535336633613632653965343937396161336362393139636538
33326533393035393737666465636134386536336133326134313634306562336538326362616663 37326431313863323035626532313466343334333836363435306132323636396265393661626233
38383238386538623938353435386165386339636135313165653738366432323534396236353031 34646465336366333138343830663535303937336162303736663566336265303637626165633834
33373966383864643863393133303263386164626438633236643365326530333632363831643430 61373762633130643363646336303930616230393835623533386661653238363533636565633739
38303230323933323965663166643263316166323531303331323464383534323438373163366566 62643431313966346162303966386438373132303733303561303531363466366666326465633632
64373531633031326232646462646632383562656662383265373835323134376161323066663633 63323163303066363537313739643062303334303830323665643534343063383463373532383862
38616362393866623962616330393130373634313630373537303938633937373030666633393936 31653431643935653662643936616561383863353962333664333539303136366632323632646136
31363432313362393530343763623866346164666236353135343663353338623236343764316366 66613465623831646533663261643566646337373661336630623435353635363438653132633564
31363438626665633864363238626463613662383331663963666265303930306662666361623331 36623136343732366436366630313133326661313130393138663334393265363933373731353730
31653562633738393537306436373435373232363039366561613031366665383135373862643433 39646563373632363835623965396666616263613239343637363632316564303661626265643830
38383434383038303636303164346130653261343961336435393337303233373263396136636532 38353061306664333331646333303165616432336666656437636661666562313662623831313162
64626430396435393034383465323130663739323763393934376136633966656238366431363031 61313835656563346132653465363463306232663334666333323139383838313562396336303066
30633035303462663734363462343062393531336665373833643337303163636561333063333037 33363137623061333864656264326237396638343331316162363231396636646266373635356436
37323236616261613463306466363236386666353738386335383038373932643330353937636261 32376566626365343136336665643362653833383334326562313030643333613566323933383334
66616634343531383433653737376434613464383639323962633831303063316430636366383936 39316365383132313831323037626437383434653234326266363237353937353431333230646239
64363463323161653164386432353762333130383262353261343230613465366138343139316565 35303230366464386137653463393937353262356565303735346630333333346265313566623963
63663361373462643631336562333736393432376332633761613333646539613761653038323037 30616338323032313063343834376232323466333564646331613465323332333039653266373830
33356431313339326164333338333466633139363066393530313332376233313631373861393435 65383330633863373432356437363563306163653732323662633838633663363564323431346164
65313436363537663637383736313030353264363233623135393039373338663966313065306532 34353131353331643338316366343435336434616136613238666666346139323839383936346337
36653435353437336266313138396334313936616630323936353632666464653238633563626439 30373062313033333431333931663161646537373762336461633131643632623432643761616438
61663461396262626666653434333564666335616332363535366663333634663762303034646631 32373038643662343961643066636263386233633239376639336339333039633035623036323462
38313663376465656530383966333138633634363632333561303862363533363636366437646438 62346137613234636336316661323465653063333831626534613838653032666666383365616364
66306261303339343462363362323465326639616565393136653431613330353437623764336562 61663037353431643030303636323330366430323366336235373861616330656333313366303563
39333837396565643637353465653965663139353237633633376534353161353337656237336465 65383431393033663063663963303437313563333639313963366561303465326339616131303034
33663038363631306532613739396664306137313534346237326365353130653134326337636330 61613835343362623861343335663637386437336536376466306130613836626530643263656233
33353031313262323962643633663261613431336262356631616236386362656333636537336333 30333437303162333138613364333264613564653235646138313436323831666263326239356131
37363331366265306161623631663932666136353035393437623464303865373836623136643931 38333961396336643566643262636464363266363566633433333361323533643064633834316333
61636636313137336638346462363966656361663033376532333932323737376263343930666630 63336135633063373531613534303662653734653137663835663562346532346233306666653432
31333733303862656234346130373264333964623366376262666635656437656236353937323166 62366666663335346363316638346335373633306237636135353931636662623863663634373532
39353863323433393866386232616166336636353238316330373030303232353731613933653636 37356163663264313766663336386661613637616263303634356538373634373238626465666261
30636533343862336364656239623939613135383035653665646538653062383633303333613732 32353165373937323561383563303933636666636131633730353337363265323862613235333832
36383837396561306330656466663630643037653930303930326561333038663666653435633565 62366531666266373139323764323638393162643530306135616531393438383963336133613565
65656662643831653966306161323933633635396537386337373739396163303536376436643634 36326162306235623630346366666562646332643233396561343938663236366530616663616364
31393431346536666233303533343136623661363531333835373934356365343237336532333830 38666637643732303764626336646263313131353734333435346465393331666264363538376666
31393335663630366464306132383665653964376563623239343762326361353930363636663338 34663464633038366565353861313734656532383065356431346334303139643537323037383539
38396435356533366332393437366136633262613662316132313066306664636166346366336465 61623136306339366537646436343233306663383031353565653066376134306266376532623561
38633838663261343237346162633533316431313566393762343663363735623965656339366566 36663464343133376264386539376165643464386230336330623134306330333636646138343566
62323738623461326434393536383861323535656265646634316138313061633465666238373331 30313239393463336436343438336564613538663734326564333930313962616631613437613163
31323335303764333266623962643839666364636132616135626437613138343236653263346166 38333866343731353337346534326630353630336330366637343138393439643938633665656139
33663035343035323433393462623938623931623164393739373739393863323230383832353239 31663733353937643937323062306332363535356363643333663731663237656464326261363264
65323436353634313665396334356435623231373561653266613362303961646639343562336266 64373239643031366238636264613539633263633433646162386366363865616634343337306233
30613664303466373936313532356333373935353331646130336235306565663265386638373232 65386463633731616533393461313437373937356164306535386332326338653734663038326138
35663839626465646331623966306238373036343263313266613736613639366661636532343562 37303238653433613166303862643630346164373436323065393135393365316466623965353739
39353831653735316134363666656562646262333731666433313238353236343338333064616631 33663034323832303830316537396461383061623662346431613365666638373235616234656134
62656136343130393234383165666533643162636635306438663966353239376263623632373933 62633236336231376131343237313837313632373965663332346239346163323237303462366237
33666539353862336263386436303064393166323035633065373862646337663933366333393830 36643132303236336238396234656337613732303636326266346230663266346431323235613831
31393064356332393635343132343163396663333639353938663335303732326637326630393164 30383930303266623566333963666339363535616132353263653862383162656533616131663033
66663662393434376265383034656563653338346661346337653030646434653661613166346631 33663230616439386439383162373364653734393934396262356232346136643237376231656262
35356362643262646566623166633466333961303263366130643562646237633062333931346431 65636564626132303461613931616138363533653333646463653635333935356531633236613263
38376564666432636334366538336661323439386164356265376238346261633736393533353361 30386431313665626439353133303733343330386137396461316232616161613162353932336434
61353333316232303632616563636636663431373664623461643037323138326630363436633363 30313265383863396630356631666230656561636239633038346465326337316430323038303830
61363562633835373764343262393562373861386630376239616434346435653365303865396362 65653130343265636361373432613864383332623965356566386232653266616335313930323436
65643066396363626134623538306330616435616532376232656237653364353037386461316430 63626234663036326363656465653237636162326366333266396631346534653935643534383835
65363461663365393261373430316134653261396231356165383931646134383862316431643339 34633835613565343662316533386561363466643932313030356430356637376665613930356561
30383636633865333632646464313233643865626430653638303530666239653265343866616437 66323938306532666537646232313163633937376533623634303962656166343961626436353563
31323435386333616261373937633534336134656664343465313961623763363566343936613536 63336238623533663666313264633832386337643865636662373066613935323066623031653535
33373765386463383966383839626635306439626531623730626664656331386136376136373736 62306131623865323731383138393639383530323631663864353262613235373361326230366562
35613936313031656530643438663736336136393933343034623238623330616338323938356433 37633930313934333339666266336230616135333463326661353863633638363937316532653666
62643134343933386239353035623764666233333230363466373163326537656363373639613066 66346438303238646663653061653764376534623861633838396261393032646162356266303931
35636663373165663738333364366561393938343366636262313437636166303435396265326161 64613037313533343763373633356534373939333534643863613734626335653930383431393561
66633136393137663033666232366132633566306434366362343531323163323533336537356562 66356634343130366136313533663533356466363366333865623637303134343035633738336138
35346433383861623365396563373237316361323564626134346135613831613636616330316164 32366561376635306230393033666666653461306536353538616363383861326562323532653939
66336461613230643532616331386364393062656662633431366661373439613164366135396636 63363532316464396135353038373162313232353432393037303730633735346435656534613839
34633031333439356661356430663032326435303962333562356530333230343432643566623833 38666137373966613130373864393036386264366464653233623161363564313134363931376563
32383737653963323264336465656633616532646264663161373462326165623339356363363036 38636265376565646162366234383737393163353137616130613263396433626533313665383738
33346331373232653462636638613463633365313664336430313731313063373363386231663035 66326266353339316637393764353530316562656661306135633462636136613736356434353663
36316462376532353136303932336665323437356630656439653563396534663436633831643635 33663861613537323930356438613464613931383366363738373663386635386564303161313463
38656633633863623337613861646530393734313935343732623465643562633362346465346432 32613065316537643032316439343165623632393039643163666233363439333232616162653735
62323838643533623131393235613532383562363530656163353063356431353331616633646664 37313163663134663462303233373462326432633333386532646464636366656366386663393763
35363864343731393735636631623365366362393638626463663239653763303762333765623835 61326262363362303564646334323939333137343438383839623432613933333234613033363832
32373338643430393765396434313939636536613535343064643634633436376163653231663365 32313930343731653633353137393263396161343836323531626531633161396639636165373439
34343334393161636136616638613766383431326665663262316530316236313533656433393161 64623035633066353266383736356233313538323661356631663031333264343064393439626135
66666331633463663933383931393865313363396238646231303936633662303737653437353065 65383464613133646462326232326532316662323037626237363939636661343738363863643261
31646163386633376431346666663066316265633031646566336564646565393939313738373331 63616636376633626164336239366530653733656534616664623137613364663564653863666362
37613366653632373934383639383933333566656336393765633436623531333031613833323332 35313563663333373666643437393763363431313266636537313236306431383739303564623435
63306562376261653663396162613965343636343365353062666632316230336437646265323930 39303331353061386461343636336262353864643266656235373235336534626336613637323863
39306430633233336336386633303739393734316331653439336538653862323831656365333935 34613036653639353861613965613536626334376566346564323964623631383333633066653634
37343437323336656338313164383566633230656333393663353064383737383835363630636364 33363831313066353465303035333636656366376664356266333763626330316465316166316264
63303534376139383962646337303237353638373130376635343966656430633165333539636131 32633037653830303661656232363335303736363865356631323365333936373264373934386663
32343263373331633831343165326361663561373363663463316233396162653039633962306530 62323732666631353062313037393130393565383137306135396366636439646637303034666261
62346633386334386238633161393337333330643432663666373964633936386239313464396566 63376339643464303961653166653031336239326437363637363133396133336639653033363563
36646333383833303562323231336364383666626438396461323533396137376339353133383361 39316438666161393261656237653366383962373736663763303733653235376233616161646535
35306561393738316563346163393035616363396131323030316238393435353862666466366133 33383930313630396337363432366239303565353965303930656565383964643162333831653034
63636565356632653165656232636166386464393139663263663430633130313538336533396431 37356566316334376436303661333932306436656464633835363262346562356637623161373936
39316662313337333032633263383533323766323361646261366233366335626631663939363161 39393837366164343363646462326132623733306666663638643639323632393438396564353064
35613135313762623134303534653532323633613363666333303031653964323963336165663831 61623634383066663537373266306166303138333165666664616531663962633164633664626461
35393266656437373634346661666132396162623136383463613630323633666564383639613332 31323666336536626635663933373566376630643830376137623033666335386534323431633233
35376534333365636664306532643234333966393666636262383065653431613834303134623165 34353136383161376534363234646132363133383064613463313034363065326537653739613635
33353164343762383335333861363033343731363064646165396334626330623930333564633238 34303061633263663433313438633533356335336131613832376539346465393866636234636661
39663338353666353661666538333265383638643861333833326234616264656339623131383231 38663331373162626534336362386465336262313430373030343466313839656566373939333630
39373630333235316230633833613038313931363839653930333262333561366361626435643464 30313362333264313232333161383566613361636362373065313664326635373233636365323564
37613439316363633264623830393439393766613164343930356537613564666530323034663332 35663466356534356237313165393537353132383236666261303038393961323339393332396431
32363433356361396264386565633962613162313062653066366131346638353134633435326165 30356334323131306164643335626466636564353830376131613764363763616163643030613334
39623361306232326437336665646462343066393062373137303339343965663164656362663466 35313261616530383766656433306666313139353935336134613833303136646132646230613861
63366237633637373730383538616164313162373965313665656133303630353233363938643338 62636664633031353832623537653361323231326165366163623561646330323530663436303937
37613962373834333535333438316233633432343832386664613137646132353635666531343465 33396237633534366530333633346439313733333964396530656139663431653934613962356662
38376433666662613161383534666437643963383062333534306565313337653138306434316234 62663661616330653637343734303035303238336331656465393565386565383235323637366530
61353663363437376261363361633062386263376166303531643432383339346339363638636565 38316363656332353266643339336237623031313135316335656533323130383762663936373635
62626539613831653439383738326565356639626362333566646334643164346635666235356631 66616633373861613366633234626364633963323836393233333630633063353435663666643938
30336166383461303234303633373064333138306461373633613137383066623463373564313462 33663038643865333535376662303235623563366263313531346336393330636364633437333539
38313961306134326634643064616365323463393332643836306465393839373866373536373434 34316437336166343333623438333463323662633765313562316639633535666432633730626364
61396630626264323564386230393631303330636339383166373764343038323034326666663261 65653562353430623535353032326666636565376533386663613538663536393864383966386561
64343432363061636263366539306334303135666162306338363331663633656236333739363561 34366266623265343335666237306662326235653266303861633665626266313236626632643035
30323435356636643735633266616361303762346133656436383035323436633633613436383962 63633963633934633564333736373238633936343036623334333435643739376430643365363036
37643538333637323738333238613832666334643937626366333135663764653437666161313430 66616665613936373638373738303936356161383835366338363561363935353365383734643763
37636631613662323036356638336238373939643039653063343639626266626164303335653035 33333435313434633464386538613939366531636233653264636261623033326436386138633139
66356530353130393366313939333139376135613332373462366461346364623937643035623831 33353835353936303066383161303161303432363035316264633339363637623936643830636362
64353732623036646261343866396531353236666139303739653731663835653935633934363263 35626432633262306263316666383533313630326261363466386331653936666236373661646235
36633636393764663531396435663836336436656665386339626337616663646461663466383239 65303835353535396638616331356633343438616331656462336663643533316634393365396662
62646166626634306439323136663438666634383732336663636634336239373164313730666439 38383332343664623466316235656136653962336336646434303036646437653161343739663438
38346431633863363064373635653939336565646630373864623862616537633235333064366535 32396365333366633934383038623831333435356464643962383164313437633737373435643666
65623031326635353835383534313635326561656533303964613830643830353031383166633363 63616462636532623039376534623239396430306230323030646339616364386431303361393064
63363734353838373164336466316165656566656130663264373430623534316562623261636437 32326237303464623731313661323763363134336262666332326132633732663332623935316266
64643039346563653032616134353336326562616261353631306431643965646634356663633331 33343663356462336236363339313232303032323232353061363264306263636231343365616335
33626634313330393938393238383036303630356330633366616134663961396130326261353862 37346466346632666430323739346131646163323664386663333131363932366534636666396366
35356439303236386337393766383436383935363436303761663036636530363130393432656266 63333539306131366337343230386137326266653537643762613330323631653139343265363838
64326232353662363062383232373031616665643237366139656538333536653364373138636466 65653831356237313132636530336664363338353330326234613063636466306535393963623836
39656637383634363030353966326164333235666161346563323431316634353133626463636166 34353234316239333534323933663733316161386265346130646435626463326539653631643639
64386136646632653038373162383062316334623936646138646262663733313230313931336266 33633263643665663330326338306464343331316137393264636238376461663135313538646266
39343866663163323961643634303535653835393062383962326561373661393134393362653437 65343561383365626437306636643463646433326434383966376436373936343766323238653066
35343666326339626530343964643639346439323733316465353136333536653862353730336134 38303866343738356638663932356236663463306536623635363839663763653265336461356630
61363362613261663336373732316162653465373436333032383235383030623635313835383133 38373538383964646463346637643933663663346462623230636264666336663039613037613732
31356132323731336630313761373133663035353935323832323736663961396661613535373331 63353532663535353237383431613736653066313161316363366135626362613633626133313637
30653165623766366632663739333461393337383930656438656566306130323438326161323231 65376364386339363437636537383432346231653062633332636232396435366166636262356163
34666464333033663765376566333563323562643738363366313332646331333362656638393061 61343965623863383933393639616631656633306365626536643038623036613566656362333361
61336530356136383236346532366135663732336534653233333364363931383062363430353732 33333531353262313538623031623832306433383435323763316637646433613865653961333763
32633338353936613961393961623535343433363562386163633937613266306233 32646435323738336336653265333136323961353433643031636336303763663234

File diff suppressed because it is too large Load diff

View file

@ -9,20 +9,29 @@
become: true become: true
notify: Restart postgres notify: Restart postgres
- name: Create test db - name: Create databases
community.postgresql.postgresql_db: community.postgresql.postgresql_db:
name: test name: "{{ item.database }}"
comment: This is a test db
become: true become: true
become_user: postgres become_user: postgres
loop: "{{ postgres_users }}"
- name: Create postgres user - name: Create postgres user
community.postgresql.postgresql_user: community.postgresql.postgresql_user:
db: test db: "{{ item.database }}"
name: polsevev name: "{{ item.user }}"
password: "{{ postgres_user_polsevev_pass }}" password: "{{ item.password }}"
become: true become: true
become_user: postgres become_user: postgres
loop: "{{ postgres_users }}"
- name: Set database owners
community.postgresql.postgresql_db:
name: "{{ item.database }}"
owner: "{{ item.user }}"
become: true
become_user: postgres
loop: "{{ postgres_users }}"
- name: Copy authorization config - name: Copy authorization config
ansible.builtin.copy: ansible.builtin.copy:

View file

@ -1,7 +1,12 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
30353231656462316431613932303434626565376362653831386138663233343635313139303633 62373930613962323530343463626264343035633961653939363132393032323831343235353836
6365613562643961663365336539323361316464313135610a363465646435313634393365613631 3539613639306663393766326539343164373035626163650a613164613735333062306136663863
37626332366430343861656232386661633136663334393862313866323232636238363063373534 61626563393564636439323338343339383934623233396565653666616636653964313130383035
3932326664303535300a376235663132653564626161313130663732333561643463336538306530 6139643562303034610a653037336232313561633166663037306637653835633262333765306130
31363463316136626361363332323566626435353363313530376231353862336530323265353738 39333665343664363931336339646535306564333237636338363239336633323232313236336138
6536346437653464373331653530386233663866386538373339 37626362613235666166353432616532376564376635336362316635636139646233653236326464
34616561663266383039376636313332646138363965623566303166393964303364303436386236
66326165623764653738643339616437393239323233363461333263663463363535386236366266
31303066626331353032626533616339666134343239303333633238396334643463636566346338
30353635353033663330346564666339663264623631663433646165346134373333373864643332
366661316466373933613762663231386332

View file

@ -0,0 +1,3 @@
---
restic_backup_remote: 192.168.1.100:8000
restic_remote_backup_remote: 100.64.0.5:8000

View file

@ -0,0 +1,66 @@
---
- name: Ensure restic is installed
ansible.builtin.apt:
pkg:
- restic
become: true
- name: Write password file
ansible.builtin.copy:
dest: /root/restic_password
mode: "0700"
content: "{{ repo_password }}"
become: true
- name: See if already initialized
ansible.builtin.shell:
cmd: "restic -r '{{ restic_backup_repo_string }}' init --password-file /root/restic_password"
failed_when: false
become: true
- name: Register crontab entry
ansible.builtin.cron:
name: "{{ cron_file_name }}"
cron_file: "{{ cron_file_name }}"
state: present
job: "restic -r '{{ restic_backup_repo_string }}' backup {{ directories_to_backup | join(' ') }} --password-file /root/restic_password; restic -r '{{ restic_backup_repo_string }}' forget --keep-last 10 --password-file /root/restic_password"
minute: "0"
hour: "1"
user: root
become: true
- name: Set up mirroring this repo to remote backup
block:
- name: Ensure restic is installed
ansible.builtin.apt:
pkg:
- restic
- cron
become: true
- name: Write password to file
ansible.builtin.copy:
dest: /root/restic_password
mode: "0700"
content: "{{ repo_password }}"
become: true
- name: Initialize repo locally
ansible.builtin.shell:
cmd: "restic -r /mnt/backup/{{ repo_name }} init --password-file /root/restic_password"
failed_when: false
become: true
- name: Register cronjob for daily remote backup
ansible.builtin.cron:
name: "{{ cron_file_name }}"
cron_file: "{{ cron_file_name }}"
state: present
hour: "1"
minute: "30"
user: root
job: "restic -r /mnt/backup/{{ repo_name }} copy --from-repo '{{ restic_remote_backup_repo_string }}' --from-password-file /root/restic_password --password-file /root/restic_password; restic -r /mnt/backup/{{ repo_name }} forget --keep-last 10 --password-file /root/restic_password"
become: true
delegate_to: soteria

View file

@ -0,0 +1,2 @@
restic_backup_repo_string: "rest:http://{{ restic_backup_user }}:{{ restic_backup_pass }}@{{ restic_backup_remote }}/{{ repo_name }}"
restic_remote_backup_repo_string: "rest:http://{{ restic_backup_user}}:{{ restic_backup_pass}}@{{ restic_remote_backup_remote }}/{{ repo_name }}"

View file

@ -0,0 +1,8 @@
$ANSIBLE_VAULT;1.1;AES256
34393364363339636430306233353132356136613033326166313066616261373765633462356137
6634643264393632313064346530323730366431323738350a366537376335646133666361616632
32366134303232393436326661366661343663626139333663363638643639663436316166373566
3133343437353630300a646538373030623439333033306565333830386165343133663464373466
64333532363933383135353563356335663530653965343231356462346565333536303031383834
66633038303833333766346136663362643535643332333666653761353365313665386138326561
653361643534643365393039373232326437

View file

@ -48,7 +48,7 @@
register: result register: result
- name: Tailscale up - name: Tailscale up
ansible.builtin.shell: "tailscale up --login-server={{ headscale_domain }} --auth-key={{ result.stdout.split('\n')[-1] }}" ansible.builtin.shell: "tailscale up --login-server={{ headscale_domain }} --auth-key={{ result.stdout.split('\n')[-1] }} --ssh --reset"
tags: tags:
- skip_ansible_lint - skip_ansible_lint
become: true become: true

View file

@ -0,0 +1,28 @@
$ANSIBLE_VAULT;1.1;AES256
61613033666561393035356531613466643362366535653731663139373731343531343563353536
3336336562636364386666643038363731383665306164360a663438366436393662646235313066
33656164613663316261323634313338363966383463663237326666616432376339326163376532
6563643561353333640a616437366234336564636535333737306632326538303330353265623464
37386463333661383865376562643738633137376334303834313161356435363734333062393533
31643261633539653465343633643462636561656535393939356565663130393731393236306636
36366539346465343231633732326337613830636264346435333465616230343464343064306562
30666330356465326461373630623131623430303732313337653261633136303233353838623465
31623339613866333137633231653332613239323838616366666330336164383338326231663031
38386631633932326563353533343737313935313936613537326231616435343763303065653064
61656133336132623361353061613761656434303431623163613636396665373838313836306133
35373333656263636438306237623033336339666266626236343230393931653434373966373264
33643134393538363636386137356237323839393466356336373563336639363766663763616336
63356635356339643235333062656231656664386164346461613130613533346466363936633031
33666635313436623665613432616531373965623030626635643131356462613363616435643131
33353631653633306234646335643736313762393566323636366239366463333039656666323038
63333666633862663166333136626635616333343064306636316539393835396136636263393064
64306161386331343663656631323830613033353461376665356139313665333863333361396635
63386162653434343335613965616139393235636139613230646330333638623262303761663364
39373231376334663931323831643738643436346235396530346362646332613030626238356262
36633739313538666134353839373533633332653931633466663466343139356434663631306232
35633965353964656465303032623637343863643639626434356365383861613430363764626234
66353265666532316338323663633337363164343432386430366439326534663230313432323661
33336335316164666664663938363064323832333061366534303137373363636365336466393431
34306132623533653739363837616663343962353262393339353430613530303133373965316230
66303265306637376364373262383565363432633433346466616532663038363135333536323436
333438366635366138373139363934623234

View file

@ -0,0 +1,63 @@
$ANSIBLE_VAULT;1.1;AES256
63366564613261356365306161626566353135393331623032646263386435333861376462363262
6336653539326138636261613963393431633237303666320a386366363662353636633630343039
65333065373735666364623166363838303635393836383535306533663230353061333064393131
3265353061653464380a383166666433633735316364613731303061636130336462363462376266
63613039316261363061633230366436663938613431636435383862633335376365376536356539
63313666616330633534356635303332303335386432623263626330376532636665396630636465
36386335653530373763393137303935306635353135353239323066306661326266383337346532
35653766633330386262346632343133636536613534356563383365333630333733393034393535
65653338636134326365326230383462353861353733326533373131393632303639373462363530
61353034393964393566633537383138623835303262363564343833623136663765623865316363
65363038643635326464663530323735363938663137353661346237643134393762356338396237
66303430373133643930666432373066356632393638303331323830363063363464623963313233
38653138653439383562386337363731656538303331353761666365663861376434323665353963
32393635333865353662666431643735633763616634663935616265343566343335653336373232
36623831346137313065616539313938323534393965643462353331353765643231663534323239
32373635353163396332373062393764396266393061313261313637396132666638626330613132
35366637326662653166646637633038356366306165326433306361393335333833646464323337
30363234366166316536646339643065646335323530613463306333363761336637323464343661
38316563613962313439613264393765653135333261303832326266326231626532643232373963
36663236333762363139303834333565613638316263353366383035366461643633383262333563
38343063643061386339616336663562323536326437623436386639383534373836643736646239
65393237376132356462336532323935613336613661386539613737386166643137373535306239
37373333653465306366393635393336666230393964633930343134623337343661323432633462
30383331366634323361646334616463346263373635653661343739393335356261636131653831
31336166633033356633393439353230313266656430643432656661323764663534323132643637
33653830656333333863383638633630613736333230353662303230346439353237656638656364
35366332633039376133623766663633306639306638636130346431343230353837343833646639
62373066356363356135313732623437656132396330623832326639303565663965393636323732
62303865616334343963323236353433386366386530393265306463646537656362613164323433
66633664626434666230663338666439616338623734343538663730666465653836643765363536
35623666616638326361363635613035333135363431376364376233396664313236343464373263
30633638396533613734616231643631636564356563393563623462386438656565626235383937
33343136623639373931313664383936636166333163343631363763343161333463356666303462
66313962333634336133306331373366386438376166653736626165333665316665336562353034
31313231316166323766373165666464363165306438613162303666633564376639313966636563
37616162316339393531393662653235383062623963363765333864396636393963343031626264
33333261336663393933323564633966373637323338353964613434623939363931336439353330
36613030373664633437646236663832373062343537376234373036613034656133336362656631
35373664383039323431326330313432633133653362346464643033623232316135623530663230
32633637306139666634633232623331303931393336376165323864323361646662363438343261
36376466326638623233646531373462353530313565646530366133653866306432373338366636
62326362616161656261393062656138343166646136316365663763353861663462396564386632
33613538613665613938623333363031323136336163646137313035626233626433373966616538
39613636653937353362613539323666313731356239383432363832363064373133393163396264
62663862383565343237663133636462613061366162666135646165653637613037323237383464
33366631646335646530386361393930626533373230643335316438326462386631656261373433
36636333653231326536333130373766336333336366353636303665633230383334653932656162
30393365326638353366316230303032303864633434323965633132353335666635316662336238
35623631383163613264383661366166623139346330613338613732616638313838633165646662
39333438333061353663326234313337653166633731613638663136396266616433653662356635
64303334376639663636346535643762326266633863666331343862653664376235616339643264
37623633356431653933356536623235643562353437643165383063643136646665373036313363
66336337383866323863376131303232373631383131666538613230313330616632346233396463
30393736653763396536363262396132666133356136323132393337386437343565343930636631
35356662643863343634373536323762396130616637313631663663336634386463393362663465
34363161386463323532376233336263373733653232316637303735653936373866386431376563
34646632623661626463663039613735306531633836333335326362373130333361356138353335
36626262326239643737666664306338316264353635366662646633303864353535356633616139
34643764373433656439303830393639656566326333616630613833363932643732653639303763
65326636353534653833343534363665356263303663626537633331313564663963396138663466
65396635343538333432356436373362323565666535373165666365356533356632363165393230
3931373634646365346465393538646130373164656366653865

View file

@ -0,0 +1,5 @@
---
dependencies:
- role: nginx
nginx_acme_sh_domains:
- umami.polsevev.dev

View file

@ -0,0 +1,25 @@
---
- name: Make project source
ansible.builtin.file:
state: directory
path: ~/umami
owner: ansible
mode: "0755"
- name: Copy compose file
ansible.builtin.copy:
src: docker-compose.yml
dest: /home/ansible/umami/docker-compose.yml
mode: "0644"
- name: Start docker compose
community.docker.docker_compose_v2:
project_src: ~/umami
- name: Copy umami nginx
ansible.builtin.copy:
src: umami.conf
dest: /etc/nginx/sites-enabled/umami.conf
mode: "0644"
become: true
notify: Reload nginx

View file

@ -1,39 +1,39 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
39353535343532373237396263626266346462346664633566363139346437316365386339316436 36613265663433633735363365383863316233366437343262376332383339376462303037623131
3935626664386664363939393033386137366661326463370a326131336633393362616635386338 3236643139316534613739616533643731613337633638380a316465333435373761356662643638
31633133393464383332653231313032613131653038376337383931636366386262646162333263 34353430616539633037636432326230316439383566623631643531336366386263326139376634
3730386430643439390a636637333664633036316131663534623163303139646533636634653431 3565636236613765390a613663323736343430333639643536356634663035633065353932316435
64306636623430326136396533663465653666343335363832343231353633396334313661386339 33343133643639316433366337313432373164616263383834333863393436383037626131353338
63653935656134383636663435393261633337633966333566336534616639636237663836643731 61363536343138346666636163303431663434396139373432653233383935393834646264346136
65343933393765373362633234646334363965613138636139616564636336373930623936623063 36653864366230363163663933643664306639393566306533663932306337343061346637653964
33666139613261303362376332343763363936613464376338643762623736613933303064343765 38326564643965346639313861353038303030313761383065616364303665636562653132393862
31393733383130333737393239336436373664353830646339616661313265336163323964656465 35343361333561393731663965306235336639613533313330663337313862333933663036363435
62663861313264383363653132396531643265643538653136613166396564626564656262656637 34323266373261313963653266363564653335366561613163393034633337363934643361643964
31633364333533373232613435343162353636646665343839623630306665343938643531346364 37313234633066313932643031393439643833653330346433613833343034343739663230383835
39323335383138633137373132643763326663343437323761623735313166376565333734363039 39363536646132653566633265336565616431613963623439393933346538663932643861646432
34356232336262623936386634306636306162356333636164333537383238326266643465366233 30393036386462346538306433393663313238383439653663386130323961343361663665326361
39386561623335343532613031313564626534636435316139393137663338333936636462343030 63643334373035303437626565656633373434393062326135333261373332393531326132396136
36373936623165356335333532613665323639643264623830333730313635383339663161366433 35643262366232623231646261333530303238396133306564666261393934643832396261343336
65353862323331626364613133643262653839316134623963323665623336653962623533343632 33376566323163666135393233623934373235303266323032363234643661363638633663616338
61366334623262613133636635316361663365623130336438343061326465303632656163313739 39333266643038346639646434376666663261343335613839393763613631376530663562326239
37336562356438376364396231316362656632386634333239663963643634623035653335636131 32383934636461623230313833316338343564653565396164656238316165313233363461373634
36313663363639643733353033396436386536653033306630646366366133656662373837353837 34393739353635343337646432326530353632653332316134653235326366643239353639636138
38336464303562343863613638633331643662323738623432323339626364353165313234313864 36666530653830346339343864653936653938396638343265653265633764376538656334613936
63643334306266633361393962306135623764663836323965333561616337393461326231653939 35623537376632326534363865623834356332623534656236656565646466326235393539373930
34363364656338373834666530343838333239363838373530376166383433643031663963313239 38646564636664323530363334383366363032366664333738653662653435313933643935326539
39373135343435643332636437383062656633643562623961396666363966356165623134666234 38363366633236346530356633336264643965663562346662366236666266343766626366636633
35646163353132386136333665303135643538393830633062656138633335303065623366386133 39626339313462373639363763333038633936373332636363326238646335366639373531303063
38633631393463336433656539336363313530373765396532313862323838323161653636393939 63623230383436326564313538636537303533303939636336613264666665623462663135653733
31633930376464353032646565373863316337646166333038323339333430656533373737363639 35613531346136633363333938376161633839643166303461306138303237373236663266323463
61343034396536373965326664333036616465383831306433396339313635643939356134313366 39636164353963636130656438656261343061353061326639636463316539376631353538666365
33323365316162313430323134633839653563393437386161373165616536366532306236643838 38636431393265333062316437383436343138383432323739616363636337613333323635316533
32326465626662373433313039376630656265393931393239376461616331303233323438393864 33383334346339346430333939343235353563656661363633343264666530656365303866343339
35636366643636616533616436336435646232666431646662383234316465356137316333343936 65323664333565646562623833376233373465653538366337363761656430643839323361386136
37396338333436303432663731373238663836383036626533323135633731306466623532383832 35636362383338663431643562316338303164363064383537643038323263303162323265343039
37643835313333316634623266333465663635353664316363376332373261623763396263303331 30346233613065366630323165363365336234653662656434616661643230646365306335366532
66333462626233383233383739393837333735353736636165323738613131303764366331613265 64353365663035313935393931383435383236353839346635656634396636643361313139383732
61323166343437653162333538623932363761666532656230653338666138353139323265616139 31373366313761643537343265666133613362653337323734663166346433356638303333643037
66393037396131303831653161633735303562376432616163663766616336653761356561316666 37636266303834346665383532366133343032633234613039303162656231343963346538393935
37383731613562623936366139613738356630616261363739313766633936333039396638623233 64353665316538346134653939383963366136656531336161366364393134393737643163396362
32376661323266333563323866346666613030383138656366386236323239666636626532316161 66663962333163366634306362323964343634343435633663356631613731346534393264643233
3439303331396635626133356564343037626135343731633761 6163333133316133333066333737323739363537636131383662

View file

@ -5,6 +5,12 @@
roles: roles:
- common - common
- name: Soteria stuffs
hosts:
- soteria
roles:
- upgrade
- name: Setup postgres - name: Setup postgres
hosts: hosts:
- brevgress - brevgress
@ -19,18 +25,56 @@
- name: Docker on vms - name: Docker on vms
hosts: hosts:
- vms - havneboks
roles: roles:
- docker - docker
- name: Setup uptime_kuma - name: Setup Internal Docker Services
hosts: hosts:
- havneboks - havneboks
roles: roles:
- uptime_kuma - uptime_kuma
- kitchenowl
- name: Setup FTB server #- name: Setup FTB server
# hosts:
# - matmonster
# roles:
# - enigmatica2
- name: Setup umami
hosts: hosts:
- matmonster - umami
roles: roles:
- enigmatica2 - umami
- name: Setup polsevev.dev + jellyfin proxy
hosts:
- polsevev
roles:
- polsevev.dev
- name: Setup headscale nginx
hosts:
- olympus_entry
roles:
- olympus_entry
- headscale
- name: Setup forgejo
hosts:
- forgejo
roles:
- forgejo
- name: Setup Forgejo actions
hosts:
- byggmester
roles:
- byggmester
- name: Setup filesharing
hosts:
- arkivet
roles:
- arkivet

11
ansible/stress.yml Normal file
View file

@ -0,0 +1,11 @@
---
- name: Stress test homelab (See max power usage and temperature)
strategy: free
gather_facts: true
hosts:
- proxmox
- cronus
tasks:
- name: Stress for 2 minutes
ansible.builtin.command: "stress -c {{ ansible_facts['processor_cores'] * ansible_facts['processor_threads_per_core'] }} --timeout 180"
poll: 0

View file

@ -2,6 +2,7 @@
hosts: hosts:
- proxmox - proxmox
- vms - vms
- vps
serial: 1 serial: 1
roles: roles:
- upgrade - upgrade

5
nixos/deploy.sh Executable file
View file

@ -0,0 +1,5 @@
#!/bin/bash
nixos-rebuild --impure --flake $(pwd)/$2#$2 --build-host ansible@$1 --target-host ansible@$1 --fast --use-remote-sudo switch

View file

@ -0,0 +1,25 @@
{ config, pkgs, ... }: {
environment.systemPackages = with pkgs; [
nginx
authentik
];
services.authentik = {
enable = true;
# The environmentFile needs to be on the target host!
# Best use something like sops-nix or agenix to manage it
environmentFile = "/run/secrets/authentik/authentik-env";
settings = {
#email = {
# host = "smtp.example.com";
# port = 587;
# username = "authentik@example.com";
# use_tls = true;
# use_ssl = false;
# from = "authentik@example.com";
#};
disable_startup_analytics = true;
avatars = "initials";
};
};
}

View file

@ -0,0 +1,107 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
{
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "hephaestus"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
networking.defaultGateway.address = "192.168.1.1";
networking.interfaces.enp3s0.ipv4.addresses = [{
address = "192.168.1.25";
prefixLength = 24;
}];
networking.nameservers = [ "192.168.1.69" "1.1.1.1" ];
# Set your time zone.
time.timeZone = "Europe/Oslo";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
# Configure keymap in X11
services.xserver.xkb = {
layout = "no";
variant = "";
};
# Configure console keymap
console.keyMap = "no";
# Define a user account. Don't forget to set a password with passwd.
users.users.hephaestus = {
isNormalUser = true;
description = "Hephaestus";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [ ];
};
users.users.ansible = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "sudo" "docker"];
packages = with pkgs; [ ];
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHlpPX7ogQo0dG0Ze4VSsAAJO+Z7w/wxGFZ+vuTHwDT9 forgejo-runner"
"sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBDpeouwzFZoYA7AYARaJ/qdQHORJB2h1V73PXQYEAI7sDrc3kYwgZPbrZ3pGkGKaHBl45kiV6SYsC7191OCwIl8AAAAEc3NoOg== A"
"sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBHlAtX4mBifZZ8u6sJckCgA6skwN7aamVK+lQuXLQ6kQWJy7GlEXEmoR9RW/0UIrQYLC+wd8Q5MROkYpn+cHLSoAAAAEc3NoOg== B"
];
};
security.sudo.wheelNeedsPassword = false;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
btop
vim
tailscale
python3
git
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
virtualisation.docker.enable = true;
services.tailscale.enable = true;
# Enable the OpenSSH daemon.
services.openssh.enable = true;
services.openssh.settings.PermitRootLogin = "no";
nix.settings.trusted-users = [ "rolf" ];
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
}

269
nixos/hephaestus/flake.lock Normal file
View file

@ -0,0 +1,269 @@
{
"nodes": {
"authentik-nix": {
"inputs": {
"authentik-src": "authentik-src",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils",
"napalm": "napalm",
"nixpkgs": "nixpkgs",
"poetry2nix": "poetry2nix",
"systems": "systems"
},
"locked": {
"lastModified": 1743172544,
"narHash": "sha256-I6//hyls5T6Y93IgwbWn5izeT29o+yza4yRgBcmNars=",
"owner": "nix-community",
"repo": "authentik-nix",
"rev": "b4916a86d4e650401e67dc03556eadb4a3cb248a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "authentik-nix",
"type": "github"
}
},
"authentik-src": {
"flake": false,
"locked": {
"lastModified": 1743169792,
"narHash": "sha256-aaSAlFIc5Gn5PJPVuObi24Y86/3N3yFJVQTx1tV2i2A=",
"owner": "goauthentik",
"repo": "authentik",
"rev": "748a8e560f2eb93f7ec15d6762d4e5931fc1fa2a",
"type": "github"
},
"original": {
"owner": "goauthentik",
"ref": "version/2025.2.3",
"repo": "authentik",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": [
"authentik-nix",
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"napalm": {
"inputs": {
"flake-utils": [
"authentik-nix",
"flake-utils"
],
"nixpkgs": [
"authentik-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1725806412,
"narHash": "sha256-lGZjkjds0p924QEhm/r0BhAxbHBJE1xMOldB/HmQH04=",
"owner": "willibutz",
"repo": "napalm",
"rev": "b492440d9e64ae20736d3bec5c7715ffcbde83f5",
"type": "github"
},
"original": {
"owner": "willibutz",
"ref": "avoid-foldl-stack-overflow",
"repo": "napalm",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"authentik-nix",
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729742964,
"narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "e04df33f62cdcf93d73e9a04142464753a16db67",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1740367490,
"narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0196c0175e9191c474c26ab5548db27ef5d34b05",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1738452942,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1739206421,
"narHash": "sha256-PwQASeL2cGVmrtQYlrBur0U20Xy07uSWVnFup2PHnDs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "44534bc021b85c8d78e465021e21f33b856e2540",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": [
"authentik-nix",
"flake-utils"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"authentik-nix",
"nixpkgs"
],
"systems": [
"authentik-nix",
"systems"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1739883580,
"narHash": "sha256-3ydikhrNaWy8j0cqHju/94PcD4GZ9T4Ju4rHh34oz3k=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "d90f9db68a4bda31c346be16dfd8d3263be4547e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": {
"inputs": {
"authentik-nix": "authentik-nix",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"authentik-nix",
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1730120726,
"narHash": "sha256-LqHYIxMrl/1p3/kvm2ir925tZ8DkI0KA10djk8wecSk=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "9ef337e492a5555d8e17a51c911ff1f02635be15",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View file

@ -0,0 +1,30 @@
{
description = "A simple NixOS flake";
inputs = {
# NixOS official package source, using the nixos-24.11 branch here
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
authentik-nix = {
url = "github:nix-community/authentik-nix";
## optional overrides. Note that using a different version of nixpkgs can cause issues, especially with python dependencies
# inputs.nixpkgs.follows = "nixpkgs"
# inputs.flake-parts.follows = "flake-parts"
};
};
outputs = { self, nixpkgs, ... }@inputs: {
# Please replace my-nixos with your hostname
nixosConfigurations.hephaestus = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
# Import the previous configuration.nix we used,
# so the old configuration file still takes effect
./configuration.nix
./nginx.nix
#./authentik.nix
#sops-nix.nixosModules.sops
];
};
};
}

View file

@ -0,0 +1,42 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/29bb7df2-9a48-4439-b98a-a3c8f39f9aba";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/8840-3B6F";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/ca7b1c38-a559-4535-8e7e-2168e0354d09"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s20f0u3.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,50 @@
{ config, pkgs, ... }: {
environment.systemPackages = with pkgs; [ nginx ];
services.nginx.enable = true;
services.nginx.virtualHosts = {
"polsevev.dev" = {
useACMEHost = "polsevev.dev";
forceSSL = true;
root = "/var/www/polsevev/dist";
};
"stortissvatnet.no" = {
useACMEHost = "stortissvatnet.no";
forceSSL = true;
root = "/var/www/stortissvatnet";
};
"tissvasselva.no" = {
useACMEHost = "tissvasselva.no";
forceSSL = true;
root = "/var/www/tissvasselva";
};
};
security.acme = {
acceptTerms = true;
defaults.email = "rolf.martin@glomsrud.no";
certs = {
"polsevev.dev" = {
domain = "polsevev.dev";
dnsProvider = "cloudflare";
environmentFile = /cloudflare.env;
group = config.services.nginx.group;
};
"stortissvatnet.no" = {
domain = "stortissvatnet.no";
dnsProvider = "cloudflare";
environmentFile = /cloudflare.env;
group = config.services.nginx.group;
};
"tissvasselva.no" = {
domain = "tissvasselva.no";
dnsProvider = "cloudflare";
environmentFile = /cloudflare.env;
group = config.services.nginx.group;
};
};
};
}

46
terraform/arkivet.tf Normal file
View file

@ -0,0 +1,46 @@
resource "proxmox_vm_qemu" "arkivet" {
name = "arkivet"
desc = "arkivet"
target_node = "oceanus"
agent = 1
onboot = true
clone = "VM 9000"
cores = 8
sockets = 1
cpu = "host"
memory = 4096
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "15G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.55/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}

46
terraform/byggmester.tf Normal file
View file

@ -0,0 +1,46 @@
resource "proxmox_vm_qemu" "byggmester" {
name = "byggmester"
desc = "byggmester"
target_node = "hyperion"
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 2048
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "15G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.54/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}

45
terraform/fabrikken.tf Normal file
View file

@ -0,0 +1,45 @@
resource "proxmox_vm_qemu" "fabrikken" {
name = "fabrikken"
desc = "Factorio VM"
target_node = "hades"
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 4096
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "15G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.31/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}

46
terraform/forgejo.tf Normal file
View file

@ -0,0 +1,46 @@
resource "proxmox_vm_qemu" "forgejo" {
name = "forgejo"
desc = "Forgejo"
target_node = "poseidon"
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 2048
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "15G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.53/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}

102
terraform/k3s.tf Normal file
View file

@ -0,0 +1,102 @@
locals {
master_count = 3
agents_count = 4
master_targets = ["zeus", "hades", "poseidon"]
agent_targets = ["hermes", "ares", "oceanus", "hyperion"]
}
resource "proxmox_vm_qemu" "masters" {
count = local.master_count
name = "mester-${count.index}"
desc = "K3S master node"
target_node = local.master_targets[count.index]
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 4096
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "10G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.${80+count.index}/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}
resource "proxmox_vm_qemu" "agents" {
count = local.agents_count
name = "agent-${count.index}"
desc = "K3S agent node"
target_node = local.agent_targets[count.index]
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 6144
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "20G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.${40+count.index}/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}

45
terraform/umami.tf Normal file
View file

@ -0,0 +1,45 @@
resource "proxmox_vm_qemu" "umami" {
name = "umami"
desc = "Analytics VM"
target_node = "hades"
agent = 1
onboot = true
clone = "VM 9000"
cores = 4
sockets = 1
cpu = "host"
memory = 4096
# Setup the disk
disks {
ide {
ide2 {
cloudinit {
storage = "cronus_backup"
}
}
}
scsi {
scsi0 {
disk {
size = "16G"
storage = "maskin"
}
}
}
}
network {
bridge = "vmbr0"
model = "virtio"
}
scsihw = "virtio-scsi-pci"
os_type = "cloud-init"
ipconfig0 = "ip=192.168.1.52/24,gw=192.168.1.1"
nameserver = "192.168.1.69"
ciuser = "ansible"
sshkeys = var.ssh_public_key
}