mirror of
https://github.com/JG2401/HetznerDokployLab.git
synced 2026-08-29 04:30:10 +00:00
first commit
This commit is contained in:
37
.github/dependabot.yml
vendored
Normal file
37
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
#firefly
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/firefly"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
#immich
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/immich"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
#it-tools
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/it-tools"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
#n8n
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/n8n"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
#paperless
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/paperless"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
#tandoor
|
||||||
|
- package-ecosystem: "docker-compose"
|
||||||
|
directory: "/projects/tandoor"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
36
README.md
Normal file
36
README.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Prerequisites
|
||||||
|
|
||||||
|
- Hetzner Account
|
||||||
|
- Github Account
|
||||||
|
|
||||||
|
## Step 1 - Generate SSH Keys
|
||||||
|
|
||||||
|
- Run command "ssh-keygen -t ed25519" in terminal
|
||||||
|
|
||||||
|
## Step 2 - Hetzner Project
|
||||||
|
|
||||||
|
- Select ``Console` and create a new Project
|
||||||
|
|
||||||
|
### SSH-Key
|
||||||
|
|
||||||
|
- Select `Security` and add a SSH-Key. Copy the whole content of the id_ed25519.pub file into the input field
|
||||||
|
|
||||||
|
### Server
|
||||||
|
|
||||||
|
- Select `Server` and add a Server.
|
||||||
|
- Choose a Server-type and location.
|
||||||
|
- For a Image klick on `Apps` and select Docker CE.
|
||||||
|
- Add yor SSH-Key and scroll down `Name`.
|
||||||
|
|
||||||
|
### Firewall
|
||||||
|
|
||||||
|
- Klick on the new Server and select Tab `Firewalls`. Then `Create Firewall`.
|
||||||
|
- The presets can stay. Just add one new incoming-rule with port `3000`. Then click `Create Firewall` again.
|
||||||
|
|
||||||
|
## Step 3 - Connect to Server via SSH
|
||||||
|
|
||||||
|
- Open the Terminal and type `ssh root@<Server-IP>`
|
||||||
|
|
||||||
|
## Step 4 - Install Dokploy
|
||||||
|
|
||||||
|
Run `curl -sSL https://dokploy.com/install.sh | sh` in the Terminal
|
||||||
29
projects/firefly/README.md
Normal file
29
projects/firefly/README.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# [firefly](https://www.firefly-iii.org)
|
||||||
|
|
||||||
|
## firefly
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Compose Path: `./projects/firefly/docker-compose.yml`
|
||||||
|
|
||||||
|
### Environment
|
||||||
|
|
||||||
|
- SITE_OWNER: #site owner email-address
|
||||||
|
- DB_CONNECTION: #db connection type like `mysql` or `postgres`
|
||||||
|
- DB_HOST: #db hostname
|
||||||
|
- DB_PORT: #database port - default: `3306`
|
||||||
|
- DB_DATABASE: #database name
|
||||||
|
- DB_USERNAME: #database user-name
|
||||||
|
- DB_PASSWORD: #database password
|
||||||
|
- STATIC_CRON_TOKEN: #32 digits token - use [it-tools token-generator](https://it-tools.tech/token-generator?length=32) to get one
|
||||||
|
- APP_ENV: #default: `production`
|
||||||
|
- APP_KEY: #a base64 php app key - use [Generate Laravel APP_KEY](https://generate-random.org/laravel-key) to get one
|
||||||
|
- APP_URL: #default: `http://app:8080`
|
||||||
|
- TRUSTED_PROXIES: default: `"*"`
|
||||||
|
|
||||||
|
### Domains
|
||||||
|
|
||||||
|
- Service Name: `firefly`
|
||||||
|
- Container Port: `8080`
|
||||||
|
- HTTPS: `true`
|
||||||
|
- Certificate Provider: `Let's Encrypt`
|
||||||
62
projects/firefly/docker-compose.yml
Normal file
62
projects/firefly/docker-compose.yml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
firefly:
|
||||||
|
image: fireflyiii/core:latest
|
||||||
|
hostname: app
|
||||||
|
container_name: firefly_iii_core
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- firefly_iii_upload:/var/www/html/storage/upload
|
||||||
|
environment:
|
||||||
|
SITE_OWNER: ${SITE_OWNER}
|
||||||
|
DB_CONNECTION: ${DB_CONNECTION}
|
||||||
|
DB_HOST: ${DB_HOST}
|
||||||
|
DB_PORT: ${DB_PORT}
|
||||||
|
DB_DATABASE: ${DB_DATABASE}
|
||||||
|
DB_USERNAME: ${DB_USERNAME}
|
||||||
|
DB_PASSWORD: ${DB_PASSWORD}
|
||||||
|
STATIC_CRON_TOKEN: ${STATIC_CRON_TOKEN}
|
||||||
|
APP_ENV: ${APP_ENV}
|
||||||
|
APP_KEY: ${APP_KEY}
|
||||||
|
APP_URL: ${APP_URL}
|
||||||
|
TRUSTED_PROXIES: ${TRUSTED_PROXIES}
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
cron:
|
||||||
|
image: alpine:3.23.2
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: firefly_iii_cron
|
||||||
|
environment:
|
||||||
|
STATIC_CRON_TOKEN: ${STATIC_CRON_TOKEN}
|
||||||
|
command: sh -c "
|
||||||
|
apk add tzdata && \
|
||||||
|
(ln -s /usr/share/zoneinfo/$$TZ /etc/localtime || true) && \
|
||||||
|
echo \"0 3 * * * wget -qO- http://app:8080/api/v1/cron/$$STATIC_CRON_TOKEN;echo\"
|
||||||
|
| crontab - && \
|
||||||
|
crond -f -L /dev/stdout"
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: mariadb:11.8
|
||||||
|
hostname: db
|
||||||
|
container_name: firefly_iii_db
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_RANDOM_ROOT_PASSWORD: ${MYSQL_RANDOM_ROOT_PASSWORD}
|
||||||
|
MYSQL_USER: ${DB_USERNAME}
|
||||||
|
MYSQL_PASSWORD: ${DB_PASSWORD}
|
||||||
|
MYSQL_DATABASE: ${DB_DATABASE}
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
volumes:
|
||||||
|
- firefly_iii_db:/var/lib/mysql
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
firefly_iii_upload:
|
||||||
|
firefly_iii_db:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dokploy-network:
|
||||||
|
external: true
|
||||||
0
projects/immich/README.md
Normal file
0
projects/immich/README.md
Normal file
14
projects/it-tools/README.md
Normal file
14
projects/it-tools/README.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# [it-tools](https://it-tools.tech)
|
||||||
|
|
||||||
|
## n8n
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Compose Path: `./projects/it-tools/it-tools.yml`
|
||||||
|
|
||||||
|
### Domains
|
||||||
|
|
||||||
|
- Service Name: `it-tools`
|
||||||
|
- Container Port: `80`
|
||||||
|
- HTTPS: `true`
|
||||||
|
- Certificate Provider: `Let's Encrypt`
|
||||||
5
projects/it-tools/docker-compose.yml
Normal file
5
projects/it-tools/docker-compose.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
services:
|
||||||
|
it-tools:
|
||||||
|
container_name: it-tools
|
||||||
|
image: corentinth/it-tools:2024.5.13-a0bc346
|
||||||
|
restart: unless-stopped
|
||||||
24
projects/n8n/README.md
Normal file
24
projects/n8n/README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# [n8n](https://n8n.io)
|
||||||
|
|
||||||
|
## n8n
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Compose Path: `./projects/n8n/n8n.yml`
|
||||||
|
|
||||||
|
### Environment
|
||||||
|
|
||||||
|
- N8N_HOST: same as host in #[domains](#domains)
|
||||||
|
- N8N_PORT: #default `5678`
|
||||||
|
- N8N_PROTOCOL: #default: `http`
|
||||||
|
- NODE_ENV: #default: `production`
|
||||||
|
- WEBHOOK_URL: #default: `https://${N8N_HOST}/`
|
||||||
|
- GENERIC_TIMEZONE: #local time zone - example: `Europe/Berlin`
|
||||||
|
- N8N_SECURE_COOKIE: #default `false`
|
||||||
|
|
||||||
|
### Domains
|
||||||
|
|
||||||
|
- Service Name: `n8n`
|
||||||
|
- Container Port: `5678`
|
||||||
|
- HTTPS: `true`
|
||||||
|
- Certificate Provider: `Let's Encrypt`
|
||||||
17
projects/n8n/docker-compose.yml
Normal file
17
projects/n8n/docker-compose.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
services:
|
||||||
|
n8n:
|
||||||
|
image: docker.n8n.io/n8nio/n8n:1.104.0
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- N8N_HOST=${N8N_HOST}
|
||||||
|
- N8N_PORT=${N8N_PORT}
|
||||||
|
- N8N_PROTOCOL=http
|
||||||
|
- NODE_ENV=production
|
||||||
|
- WEBHOOK_URL=https://${N8N_HOST}/
|
||||||
|
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
|
||||||
|
- N8N_SECURE_COOKIE=false
|
||||||
|
volumes:
|
||||||
|
- n8n_data:/home/node/.n8n
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
n8n_data:
|
||||||
0
projects/nextcloud/README.md
Normal file
0
projects/nextcloud/README.md
Normal file
29
projects/paperless/README.md
Normal file
29
projects/paperless/README.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# [paperless](https://docs.paperless-ngx.com)
|
||||||
|
|
||||||
|
## paperless
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Compose Path: `./projects/paperless/docker-compose.yml`
|
||||||
|
|
||||||
|
### Environment
|
||||||
|
|
||||||
|
- PAPERLESS_REDIS: #default: `redis://redis:6379`
|
||||||
|
- PAPERLESS_TIME_ZONE: #local time zone - example: `Europe/Berlin`
|
||||||
|
- PAPERLESS_ADMIN_USER:
|
||||||
|
- PAPERLESS_ADMIN_PASSWORD:
|
||||||
|
- PAPERLESS_OCR_LANGUAGE: #example: `deu+eng`
|
||||||
|
- PAPERLESS_URL: #same as [domains](#domains) host
|
||||||
|
- PAPERLESS_ALLOWED_HOSTS:
|
||||||
|
- PAPERLESS_DBHOST: #db container-name
|
||||||
|
- PAPERLESS_DBPASS: #same as db POSTGRES_PASSWORD
|
||||||
|
- POSTGRES_DB: #default: `paperless`
|
||||||
|
- POSTGRES_USER:
|
||||||
|
- POSTGRES_PASSWORD: #database password - same as PAPERLESS_DBPASS
|
||||||
|
|
||||||
|
### Domains
|
||||||
|
|
||||||
|
- Service Name: `paperless`
|
||||||
|
- Container Port: `8000`
|
||||||
|
- HTTPS: `true`
|
||||||
|
- Certificate Provider: `Let's Encrypt`
|
||||||
62
projects/paperless/docker-compose.yml
Normal file
62
projects/paperless/docker-compose.yml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
paperless:
|
||||||
|
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.3
|
||||||
|
container_name: paperless
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- paperlessdata:/usr/src/paperless/data
|
||||||
|
- paperlessmedia:/usr/src/paperless/media
|
||||||
|
- paperlessexport:/usr/src/paperless/export
|
||||||
|
- paperlessconsume:/usr/src/paperless/consume
|
||||||
|
environment:
|
||||||
|
PAPERLESS_REDIS: ${PAPERLESS_REDIS}
|
||||||
|
PAPERLESS_TIME_ZONE: ${PAPERLESS_TIME_ZONE}
|
||||||
|
PAPERLESS_ADMIN_USER: ${PAPERLESS_ADMIN_USER}
|
||||||
|
PAPERLESS_ADMIN_PASSWORD: ${PAPERLESS_ADMIN_PASSWORD}
|
||||||
|
PAPERLESS_OCR_LANGUAGE: ${PAPERLESS_OCR_LANGUAGE}
|
||||||
|
PAPERLESS_URL: https://${PAPERLESS_URL}
|
||||||
|
PAPERLESS_ALLOWED_HOSTS: ${PAPERLESS_ALLOWED_HOSTS}
|
||||||
|
PAPERLESS_DBHOST: ${PAPERLESS_DBHOST}
|
||||||
|
PAPERLESS_DBPASS: ${PAPERLESS_DBPASS}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:8.4.0
|
||||||
|
container_name: paperless-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- paperlessredis:/user/local/etc/redis
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
db:
|
||||||
|
container_name: paperless-db
|
||||||
|
image: postgres:16
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- paperlessdb:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
paperlessdb:
|
||||||
|
paperlessdata:
|
||||||
|
paperlessmedia:
|
||||||
|
paperlessexport:
|
||||||
|
paperlessconsume:
|
||||||
|
paperlessredis:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dokploy-network:
|
||||||
|
external: true
|
||||||
16
projects/tandoor/README.md
Normal file
16
projects/tandoor/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# [tandoor](https://tandoor.dev)
|
||||||
|
|
||||||
|
## tandoor
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Compose Path: `./projects/tandoor/docker-compose.yml`
|
||||||
|
|
||||||
|
### Environment
|
||||||
|
|
||||||
|
POSTGRES_HOST: #db name (not container-name)
|
||||||
|
POSTGRES_PORT: #default: `5432`
|
||||||
|
POSTGRES_USER: #database user
|
||||||
|
POSTGRES_PASSWORD: #database password
|
||||||
|
POSTGRES_DB: #database name
|
||||||
|
SECRET_KEY: #32 digits token - use [it-tools token-generator](https://it-tools.tech/token-generator?length=32) to get one
|
||||||
37
projects/tandoor/docker-compose.yml
Normal file
37
projects/tandoor/docker-compose.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
tandoor:
|
||||||
|
restart: unless-stopped
|
||||||
|
image: vabene1111/recipes:2.3.6
|
||||||
|
environment:
|
||||||
|
POSTGRES_HOST: ${POSTGRES_HOST}
|
||||||
|
POSTGRES_PORT: ${POSTGRES_PORT}
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
||||||
|
SECRET_KEY: ${SECRET_KEY}
|
||||||
|
volumes:
|
||||||
|
- staticfiles:/opt/recipes/staticfiles
|
||||||
|
- ./mediafiles:/opt/recipes/mediafiles
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
db:
|
||||||
|
container_name: tandoor_db
|
||||||
|
restart: unless-stopped
|
||||||
|
image: postgres:16-alpine
|
||||||
|
volumes:
|
||||||
|
- ./postgresql:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: ${POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB}
|
||||||
|
networks:
|
||||||
|
- dokploy-network
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
staticfiles:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dokploy-network:
|
||||||
|
external: true
|
||||||
0
projects/vaultwarden/README.md
Normal file
0
projects/vaultwarden/README.md
Normal file
Reference in New Issue
Block a user