@@ -0,0 +1,23 @@
|
||||
---
|
||||
- name: Deploy Floof
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: floofs_adventure
|
||||
directories:
|
||||
- "{{ data_dir }}/floof"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
build:
|
||||
git:
|
||||
repo: git@git.alexav.gg:alex/floofs-adventure.git
|
||||
dest: "{{ data_dir }}/floof"
|
||||
image:
|
||||
name: floofs-adventure
|
||||
tag: latest
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.floof.rule: Host(`floof.alexav.gg`)
|
||||
traefik.http.routers.floof.entrypoints: webSecure
|
||||
traefik.http.routers.floof.tls.certresolver: letsencrypt
|
||||
traefik.http.services.floof.loadbalancer.server.port: "3001"
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pelican"
|
||||
|
||||
- name: Create Pelican Caddyfile
|
||||
template:
|
||||
src: templates/pelican/Caddyfile
|
||||
dest: "{{ data_dir }}/pelican/Caddyfile"
|
||||
|
||||
- name: Deploy Pelican Panel
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: Pelican
|
||||
image:
|
||||
name: ghcr.io/pelican-dev/panel
|
||||
tag: latest
|
||||
volumes:
|
||||
- "pelican-data:/pelican-data"
|
||||
- "pelican-logs:/var/www/html/storage/logs"
|
||||
- "{{ data_dir }}/pelican/Caddyfile:/etc/caddy/Caddyfile"
|
||||
etc_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
env:
|
||||
XDG_DATA_HOME: /pelican-data
|
||||
TRUSTED_PROXIES: "172.21.0.0/16"
|
||||
APP_URL: "https://{{ PELICAN_APP_URL }}"
|
||||
ADMIN_EMAIL: "{{ PELICAN_EMAIL }}"
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.pelican.rule: Host(`{{ PELICAN_APP_URL }}`)
|
||||
traefik.http.routers.pelican.entrypoints: webSecure
|
||||
traefik.http.routers.pelican.tls.certresolver: letsencrypt
|
||||
traefik.http.services.pelican.loadbalancer.server.port: "80"
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/pterodactyl"
|
||||
- "{{ data_dir }}/pterodactyl/var"
|
||||
- "{{ data_dir }}/pterodactyl/logs"
|
||||
- "{{ data_dir }}/pterodactyl/nginx"
|
||||
- "{{ data_dir }}/pterodactyl/db"
|
||||
|
||||
- name: Create Pterodactyl Network
|
||||
docker_network:
|
||||
name: pterodactyl
|
||||
|
||||
- name: Pull latest MariaDB Docker Image
|
||||
docker_image:
|
||||
name: mariadb
|
||||
tag: "10.5"
|
||||
source: pull
|
||||
- name: Pull latest Redis Docker image
|
||||
docker_image:
|
||||
name: redis
|
||||
tag: 7-alpine
|
||||
source: pull
|
||||
- name: Pull latest Pterodactyl Docker image
|
||||
docker_image:
|
||||
name: ghcr.io/pterodactyl/panel
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Redis Container
|
||||
docker_container:
|
||||
name: pterodactyl_redis
|
||||
image: redis:7-alpine
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
|
||||
- name: Create Database Container
|
||||
docker_container:
|
||||
name: pterodactyl_db
|
||||
image: mariadb:10.5
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
volumes:
|
||||
- "{{ data_dir }}/pterodactyl/db:/var/lib/mysql"
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
env:
|
||||
MYSQL_DATABASE: "panel"
|
||||
MYSQL_USER: "pterodactyl"
|
||||
MYSQL_ROOT_PASSWORD: "{{ PTERODACTYL_MYSQL_ROOT_PASSWORD }}"
|
||||
MYSQL_PASSWORD: "{{ PTERODACTYL_MYSQL_PASSWORD }}"
|
||||
|
||||
- name: Create Pterodactyl Docker Container
|
||||
docker_container:
|
||||
name: pterodactyl
|
||||
image: ghcr.io/pterodactyl/panel:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: pterodactyl
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/pterodactyl/nginx:/etc/nginx/http.d"
|
||||
- "{{ data_dir }}/pterodactyl/logs:/app/storage/logs"
|
||||
- "{{ data_dir }}/pterodactyl/var:/app/var"
|
||||
env:
|
||||
APP_URL: "{{ PTERODACTYL_APP_URL }}"
|
||||
APP_ENVIRONMENT_ONLY: "false"
|
||||
APP_TIMEZONE: "{{ TZ }}"
|
||||
DB_PASSWORD: "{{ PTERODACTYL_MYSQL_PASSWORD }}"
|
||||
APP_ENV: "production"
|
||||
CACHE_DRIVER: "redis"
|
||||
SESSION_DRIVER: "redis"
|
||||
QUEUE_DRIVER: "redis"
|
||||
REDIS_HOST: "pterodactyl_redis"
|
||||
DB_HOST: "pterodactyl_db"
|
||||
TRUSTED_PROXIES: "*"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.panel.rule: Host(`{{ PTERODACTYL_APP_URL }}`)
|
||||
traefik.http.routers.panel.entrypoints: webSecure
|
||||
traefik.http.routers.panel.tls.certresolver: letsencrypt
|
||||
traefik.http.services.panel.loadbalancer.server.port: "80"
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
- name: Deploy Romm
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: romm
|
||||
directories:
|
||||
- "{{ data_dir }}/romm"
|
||||
- "{{ data_dir }}/romm/igdb"
|
||||
- "{{ data_dir }}/romm/assets"
|
||||
- "{{ data_dir }}/romm/config"
|
||||
networks:
|
||||
- name: homelab
|
||||
image:
|
||||
name: rommapp/romm
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/romm/igdb:/romm/resources"
|
||||
- "{{ data_dir }}/romm/redis:/redis-data"
|
||||
- "{{ data_dir }}/romm/assets:/romm/assets"
|
||||
- "{{ data_dir }}/romm/config:/romm/config"
|
||||
- "{{ ROMM_LIBRARY_PATH }}:/romm/library"
|
||||
env:
|
||||
DB_HOST: mariadb
|
||||
DB_NAME: romm
|
||||
DB_USER: rommuser
|
||||
DB_PASSWD: romm
|
||||
ROMM_AUTH_SECRET_KEY: "{{ ROMM_AUTH_SECRET_KEY }}"
|
||||
IGDB_CLIENT_ID: "{{ ROMM_IGDB_CLIENT_ID }}"
|
||||
IGDB_CLIENT_SECRET: "{{ ROMM_IGDB_CLIENT_SECRET }}"
|
||||
OIDC_ENABLED: "{{ ROMM_OIDC_ENABLED }}"
|
||||
OIDC_PROVIDER: "{{ ROMM_OIDC_PROVIDER }}"
|
||||
OIDC_CLIENT_ID: "{{ ROMM_OIDC_CLIENT_ID }}"
|
||||
OIDC_CLIENT_SECRET: "{{ ROMM_OIDC_CLIENT_SECRET }}"
|
||||
OIDC_REDIRECT_URI: "{{ ROMM_OIDC_REDIRECT_URL }}"
|
||||
OIDC_CLAIM_ROLES: "{{ ROMM_OIDC_CLAIM_ROLES }}"
|
||||
OIDC_SERVER_APPLICATION_URL: "{{ ROMM_SERVER_APPLICATION_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.emu.rule: Host(`emu.fntz.net`)
|
||||
traefik.http.routers.emu.entrypoints: webSecure
|
||||
traefik.http.routers.emu.tls.certresolver: letsencrypt
|
||||
traefik.http.services.emu.loadbalancer.server.port: "8080"
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/wings"
|
||||
- "{{ data_dir }}/wings/lib"
|
||||
|
||||
- name: Pull latest Wings Docker image
|
||||
docker_image:
|
||||
name: ghcr.io/pterodactyl/wings
|
||||
tag: latest
|
||||
source: pull
|
||||
|
||||
- name: Create Wings Network
|
||||
docker_network:
|
||||
name: wings
|
||||
driver: bridge
|
||||
ipam_config:
|
||||
- subnet: "172.55.0.0/16"
|
||||
|
||||
- name: Create Wings Docker Container
|
||||
docker_container:
|
||||
name: pterodactyl_wings
|
||||
image: ghcr.io/pterodactyl/wings:latest
|
||||
recreate: true
|
||||
restart_policy: unless-stopped
|
||||
networks:
|
||||
- name: wings
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "/etc/pterodactyl:/etc/pterodactyl"
|
||||
- "{{ data_dir }}/wings/lib:{{ data_dir }}/wings/lib"
|
||||
- "{{ WINGS_CONTAINER_DIR }}:{{ WINGS_CONTAINER_DIR }}"
|
||||
- "/var/log/pterodactyl:/var/log/pterodactyl"
|
||||
- "/tmp/pterodactyl:/tmp/pterodactyl"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
WINGS_UID: "988"
|
||||
WINGS_GID: "988"
|
||||
WINGS_USERNAME: pterodactyl
|
||||
published_ports:
|
||||
- "2022:2022"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.wings.rule: Host(`{{ WINGS_URL }}`)
|
||||
traefik.http.routers.wings.entrypoints: webSecure
|
||||
traefik.http.routers.wings.tls.certresolver: letsencrypt
|
||||
traefik.http.services.wings.loadbalancer.server.port: "8080"
|
||||
Reference in New Issue
Block a user