mirror of
https://github.com/JG2401/HetznerDokployLab.git
synced 2026-08-28 20:20:15 +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