mirror of
https://github.com/davestephens/ansible-nas
synced 2025-01-12 11:38:47 +00:00
Merge branch 'anarion80-add_valheim_docker'
This commit is contained in:
commit
1212b11125
9 changed files with 209 additions and 0 deletions
|
@ -109,6 +109,7 @@ If you have a spare domain name you can configure applications to be accessible
|
|||
* [Transmission](https://transmissionbt.com/) - BitTorrent client (with OpenVPN if you have a supported VPN provider)
|
||||
* [Ubooquity](http://vaemendis.net/ubooquity/) - Book and comic server
|
||||
* [uTorrent](https://www.utorrent.com/) - The best torrent downloading app for beginners
|
||||
* [Valheim Server](https://github.com/mbround18/valheim-docker) - Valheim dedicated gameserver manager.
|
||||
* [Virtual Desktop](https://github.com/RattyDAVE/docker-ubuntu-xrdp-mate-custom) - A virtual desktop running on your NAS.
|
||||
* [Wallabag](https://wallabag.org/) - Save and classify articles. Read them later.
|
||||
* [Watchtower](https://github.com/v2tec/watchtower) - Monitor your Docker containers and update them if a new version is available
|
||||
|
|
4
nas.yml
4
nas.yml
|
@ -421,6 +421,10 @@
|
|||
tags:
|
||||
- utorrent
|
||||
|
||||
- role: valheim
|
||||
tags:
|
||||
- valheim
|
||||
|
||||
- role: virtual_desktop
|
||||
tags:
|
||||
- virtual_desktop
|
||||
|
|
86
roles/valheim/defaults/main.yml
Normal file
86
roles/valheim/defaults/main.yml
Normal file
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
valheim_enabled: false
|
||||
valheim_available_externally: false
|
||||
|
||||
# directories
|
||||
valheim_data_directory: "{{ docker_home }}/valheim"
|
||||
|
||||
# network
|
||||
valheim_port_a: "2456"
|
||||
valheim_port_b: "2457"
|
||||
valheim_port_c: "2458"
|
||||
valheim_hostname: "valheim"
|
||||
|
||||
# docker
|
||||
valheim_container_name: "valheim"
|
||||
valheim_image_name: "mbround18/valheim"
|
||||
valheim_image_version: "latest"
|
||||
|
||||
# uid/gid
|
||||
valheim_user_id: "1000"
|
||||
valheim_group_id: "1000"
|
||||
|
||||
# specs
|
||||
valheim_memory: 1g
|
||||
|
||||
# valheim
|
||||
valheim_name: "Created With Valheim Docker"
|
||||
valheim_world: "Dedicated"
|
||||
valheim_password: "Strong! Password @ Here"
|
||||
valheim_public: "1"
|
||||
valheim_auto_update: "1"
|
||||
valheim_auto_update_pause_with_players: "0"
|
||||
valheim_auto_update_schedule: "0 1 * * *"
|
||||
valheim_auto_backup: "1"
|
||||
valheim_auto_backup_nice_level: "19"
|
||||
valheim_auto_backup_schedule: "*/15 * * * *"
|
||||
valheim_auto_backup_remove_old: "1"
|
||||
valheim_auto_backup_days_to_live: "3"
|
||||
valheim_auto_backup_on_update: "1"
|
||||
valheim_auto_backup_on_shutdown: "1"
|
||||
valheim_auto_backup_pause_with_no_players: "0"
|
||||
valheim_webhook_url: "https://discord.com/api/webhooks/IM_A_SNOWFLAKE/AND_I_AM_A_SECRET"
|
||||
valheim_webhook_include_public_ip: "1"
|
||||
valheim_update_on_startup: "0"
|
||||
valheim_enable_crossplay: "0"
|
||||
valheim_type: "Vanilla"
|
||||
valheim_preset: ""
|
||||
valheim_modifiers: ""
|
||||
valheim_set_key: ""
|
||||
valheim_mods: ""
|
||||
valheim_additional_steamcmd_args: ""
|
||||
valheim_scheduled_restart: "0"
|
||||
valheim_scheduled_restart_schedule: "0 2 * * *"
|
||||
|
||||
valheim_env:
|
||||
PUID: "{{ valheim_user_id }}"
|
||||
PGID: "{{ valheim_group_id }}"
|
||||
PORT: "{{ valheim_port_a }}"
|
||||
NAME: "{{ valheim_name }}"
|
||||
WORLD: "{{ valheim_world }}"
|
||||
PASSWORD: "{{ valheim_password }}"
|
||||
TZ: "{{ ansible_nas_timezone }}"
|
||||
PUBLIC: "{{ valheim_public }}"
|
||||
AUTO_UPDATE: "{{ valheim_auto_update }}"
|
||||
AUTO_UPDATE_PAUSE_WITH_PLAYERS: "{{ valheim_auto_update_pause_with_players }}"
|
||||
AUTO_UPDATE_SCHEDULE: "{{ valheim_auto_update_schedule }}"
|
||||
AUTO_BACKUP: "{{ valheim_auto_backup }}"
|
||||
AUTO_BACKUP_SCHEDULE: "{{ valheim_auto_backup_schedule }}"
|
||||
AUTO_BACKUP_NICE_LEVEL: "{{ valheim_auto_backup_nice_level }}"
|
||||
AUTO_BACKUP_REMOVE_OLD: "{{ valheim_auto_backup_remove_old }}"
|
||||
AUTO_BACKUP_DAYS_TO_LIVE: "{{ valheim_auto_backup_days_to_live }}"
|
||||
AUTO_BACKUP_ON_UPDATE: "{{ valheim_auto_backup_on_update }}"
|
||||
AUTO_BACKUP_ON_SHUTDOWN: "{{ valheim_auto_backup_on_shutdown }}"
|
||||
AUTO_BACKUP_PAUSE_WITH_NO_PLAYERS: "{{ valheim_auto_backup_pause_with_no_players }}"
|
||||
UPDATE_ON_STARTUP: "{{ valheim_update_on_startup }}"
|
||||
ENABLE_CROSSPLAY: "{{ valheim_enable_crossplay }}"
|
||||
TYPE: "{{ valheim_type }}"
|
||||
SCHEDULED_RESTART: "{{ valheim_scheduled_restart }}"
|
||||
SCHEDULED_RESTART_SCHEDULE: "{{ valheim_scheduled_restart_schedule }}"
|
||||
# WEBHOOK_URL: "{{ valheim_webhook_url }}"
|
||||
# WEBHOOK_INCLUDE_PUBLIC_IP: "{{ valheim_webhook_include_public_ip }}"
|
||||
# PRESET: "{{ valheim_preset }}"
|
||||
# MODIFIERS: "{{ valheim_modifiers }}"
|
||||
# SET_KEY: "{{ valheim_set_key }}"
|
||||
# MODS: "{{ valheim_mods }}"
|
||||
# ADDITIONAL_STEAMCMD_ARGS: "{{ valheim_additional_steamcmd_args }}"
|
6
roles/valheim/molecule/default/molecule.yml
Normal file
6
roles/valheim/molecule/default/molecule.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
provisioner:
|
||||
inventory:
|
||||
group_vars:
|
||||
all:
|
||||
valheim_enabled: true
|
10
roles/valheim/molecule/default/side_effect.yml
Normal file
10
roles/valheim/molecule/default/side_effect.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Stop
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
- name: "Include {{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }} role"
|
||||
ansible.builtin.include_role:
|
||||
name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') | basename }}"
|
||||
vars:
|
||||
valheim_enabled: false
|
18
roles/valheim/molecule/default/verify.yml
Normal file
18
roles/valheim/molecule/default/verify.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Get valheim container state
|
||||
community.docker.docker_container:
|
||||
name: "{{ valheim_container_name }}"
|
||||
register: result
|
||||
|
||||
- name: Check if valheim containers are running
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.container['State']['Status'] == "running"
|
||||
- result.container['State']['Restarting'] == false
|
18
roles/valheim/molecule/default/verify_stopped.yml
Normal file
18
roles/valheim/molecule/default/verify_stopped.yml
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ansible.builtin.include_vars:
|
||||
file: ../../defaults/main.yml
|
||||
|
||||
- name: Try and stop and remove valheim
|
||||
community.docker.docker_container:
|
||||
name: "{{ valheim_container_name }}"
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
- name: Check if Valheim is stopped
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not result.changed
|
49
roles/valheim/tasks/main.yml
Normal file
49
roles/valheim/tasks/main.yml
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
- name: Start Valheim
|
||||
block:
|
||||
- name: Create Valheim Directories
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
owner: "{{ valheim_user_id }}"
|
||||
group: "{{ valheim_group_id }}"
|
||||
with_items:
|
||||
- "{{ valheim_data_directory }}/saves"
|
||||
- "{{ valheim_data_directory }}/server"
|
||||
- "{{ valheim_data_directory }}/backups"
|
||||
|
||||
- name: Valheim Docker Container
|
||||
community.docker.docker_container:
|
||||
name: "{{ valheim_container_name }}"
|
||||
image: "{{ valheim_image_name }}:{{ valheim_image_version }}"
|
||||
pull: true
|
||||
volumes:
|
||||
- "{{ valheim_data_directory }}/saves:/home/steam/.config/unity3d/IronGate/Valheim"
|
||||
- "{{ valheim_data_directory }}/server:/home/steam/valheim"
|
||||
- "{{ valheim_data_directory }}/backups:/home/steam/backups"
|
||||
ports:
|
||||
- "{{ valheim_port_a }}:2456/udp"
|
||||
- "{{ valheim_port_b }}:2457/udp"
|
||||
- "{{ valheim_port_c }}:2458/udp"
|
||||
env: "{{ valheim_env }}"
|
||||
restart_policy: unless-stopped
|
||||
memory: "{{ valheim_memory }}"
|
||||
capabilities:
|
||||
- SYS_NICE
|
||||
labels:
|
||||
traefik.enable: "{{ valheim_available_externally | string }}"
|
||||
traefik.http.routers.valheim.rule: "Host(`{{ valheim_hostname }}.{{ ansible_nas_domain }}`)"
|
||||
traefik.http.routers.valheim.tls.certresolver: "letsencrypt"
|
||||
traefik.http.routers.valheim.tls.domains[0].main: "{{ ansible_nas_domain }}"
|
||||
traefik.http.routers.valheim.tls.domains[0].sans: "*.{{ ansible_nas_domain }}"
|
||||
traefik.http.services.valheim.loadbalancer.server.port: "2456"
|
||||
when: valheim_enabled is true
|
||||
|
||||
- name: Stop Valheim
|
||||
block:
|
||||
- name: Stop Valheim
|
||||
community.docker.docker_container:
|
||||
name: "{{ valheim_container_name }}"
|
||||
state: absent
|
||||
|
||||
when: valheim_enabled is false
|
17
website/docs/applications/gaming/valheim.md
Normal file
17
website/docs/applications/gaming/valheim.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
title: "Valheim Server"
|
||||
---
|
||||
|
||||
Homepage: [https://github.com/mbround18/valheim-docker](https://github.com/mbround18/valheim-docker)
|
||||
|
||||
Valheim Docker powered by Odin. The Valheim dedicated gameserver manager which is designed with resiliency in mind by providing automatic updates, world backup support, and a user friendly cli interface.
|
||||
|
||||
## Usage
|
||||
|
||||
Set `valheim_enabled: true` in your `inventories/<your_inventory>/group_vars/nas.yml` file.
|
||||
|
||||
Set `valheim_optional_env` to a list of environment variables you need for the server. You can use many `valheim_*` variables alredy defined as defaults.
|
||||
|
||||
Valheim server will be available at [http://ansible_nas_host_or_ip:2456](http://ansible_nas_host_or_ip:2456) address.
|
||||
|
||||
Refer to [Valheim-docker documentation](https://github.com/mbround18/valheim-docker) for further details on how to manage the Valheim servers.
|
Loading…
Reference in a new issue