init
This commit is contained in:
110
Actual/.drone.yml
Normal file
110
Actual/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Actual
|
||||
URL: actual.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Actual failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Actual failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Actual succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Actual failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
3
Actual/README.md
Normal file
3
Actual/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Actual
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Actual)
|
17
Actual/UptimeKuma/docker-1.json
Normal file
17
Actual/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Actual - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://actual.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "actual",
|
||||
"docker_host": 1
|
||||
}
|
15
Actual/UptimeKuma/http-1.json
Normal file
15
Actual/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Actual - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://actual.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
43
Actual/docker-compose.yml
Normal file
43
Actual/docker-compose.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
services:
|
||||
actual:
|
||||
container_name: actual
|
||||
image: jlongster/actual-server:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.actual.entrypoints: websecure
|
||||
traefik.http.routers.actual.rule: Host(`actual.alexlebens.net`)
|
||||
traefik.http.routers.actual.service: actual
|
||||
traefik.http.services.actual.loadbalancer.server.port: 5006
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
privileged: true
|
||||
restart: always
|
||||
volumes:
|
||||
- server:/app/server-files
|
||||
- user:/app/user-files
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
server:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/actual_server
|
||||
|
||||
user:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/actual_user
|
110
Apprise/.drone.yml
Normal file
110
Apprise/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Apprise
|
||||
URL: apprise.alexlebens.net mind.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Apprise failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Apprise failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Apprise succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Apprise failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
3
Apprise/README.md
Normal file
3
Apprise/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Apprise
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Apprise)
|
17
Apprise/UptimeKuma/docker-1.json
Normal file
17
Apprise/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Apprise - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://apprise.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "apprise_api",
|
||||
"docker_host": 1
|
||||
}
|
17
Apprise/UptimeKuma/docker-2.json
Normal file
17
Apprise/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Apprise Mind - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://mind.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "apprise_mind",
|
||||
"docker_host": 1
|
||||
}
|
15
Apprise/UptimeKuma/http-1.json
Normal file
15
Apprise/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Apprise - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://apprise.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
15
Apprise/UptimeKuma/http-2.json
Normal file
15
Apprise/UptimeKuma/http-2.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Apprise Mind - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://mind.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
68
Apprise/docker-compose.yml
Normal file
68
Apprise/docker-compose.yml
Normal file
@@ -0,0 +1,68 @@
|
||||
services:
|
||||
apprise_api:
|
||||
container_name: apprise_api
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Denver
|
||||
image: lscr.io/linuxserver/apprise-api:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.apprise_api.entrypoints: websecure
|
||||
traefik.http.routers.apprise_api.rule: Host(`apprise.alexlebens.net`)
|
||||
traefik.http.routers.apprise_api.service: apprise_api
|
||||
traefik.http.services.apprise_api.loadbalancer.server.port: 8000
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
volumes:
|
||||
- apprise_config:/config
|
||||
|
||||
mind:
|
||||
container_name: apprise_mind
|
||||
environment:
|
||||
- TZ=America/Denver
|
||||
image: 'mrcas/mind:latest'
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.apprise_mind.entrypoints: websecure
|
||||
traefik.http.routers.apprise_mind.rule: Host(`mind.alexlebens.net`)
|
||||
traefik.http.routers.apprise_mind.service: apprise_mind
|
||||
traefik.http.services.apprise_mind.loadbalancer.server.port: 8080
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
volumes:
|
||||
- mind_db:/app/db
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
apprise_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/apprise_config
|
||||
|
||||
mind_db:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/apprise_mind_db
|
110
Audiobookshelf/.drone.yml
Normal file
110
Audiobookshelf/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Audiobookshelf
|
||||
URL: audiobookshelf.alexlebens.net openaudible.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Audiobookshelf failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Audiobookshelf failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Audiobookshelf succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Audiobookshelf failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
4
Audiobookshelf/.env
Normal file
4
Audiobookshelf/.env
Normal file
@@ -0,0 +1,4 @@
|
||||
AUDIOBOOKSHELF_UID=1024
|
||||
AUDIOBOOKSHELF_GID=65536
|
||||
PORT=80
|
||||
SOURCE=docker
|
3
Audiobookshelf/README.md
Normal file
3
Audiobookshelf/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Audiobookshelf
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Audiobookshelf)
|
17
Audiobookshelf/UptimeKuma/docker-1.json
Normal file
17
Audiobookshelf/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Audiobookshelf - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://audiobookshelf.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "audiobookshelf",
|
||||
"docker_host": 1
|
||||
}
|
17
Audiobookshelf/UptimeKuma/docker-2.json
Normal file
17
Audiobookshelf/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Audiobookshelf Openaudible - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://openaudible.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "audiobookshelf_openaudible",
|
||||
"docker_host": 1
|
||||
}
|
15
Audiobookshelf/UptimeKuma/http-1.json
Normal file
15
Audiobookshelf/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Audiobookshelf - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://audiobookshelf.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
15
Audiobookshelf/UptimeKuma/http-2.json
Normal file
15
Audiobookshelf/UptimeKuma/http-2.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Audiobookshelf Openaudible - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://openaudible.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
61
Audiobookshelf/docker-compose.yml
Normal file
61
Audiobookshelf/docker-compose.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
services:
|
||||
audiobookshelf:
|
||||
container_name: audiobookshelf
|
||||
env_file:
|
||||
- .env
|
||||
image: advplyr/audiobookshelf:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.audiobookshelf.entrypoints: websecure
|
||||
traefik.http.routers.audiobookshelf.rule: Host(`audiobookshelf.alexlebens.net`)
|
||||
traefik.http.routers.audiobookshelf.service: audiobookshelf
|
||||
traefik.http.services.audiobookshelf.loadbalancer.server.port: 80
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
privileged: true
|
||||
volumes:
|
||||
- audiobooks_nfs:/audiobooks
|
||||
- podcasts_nfs:/podcasts
|
||||
- audiobookshelf_metadata:/metadata
|
||||
- audiobookshelf_config:/config
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
audiobookshelf_metadata:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/audiobookshelf_metadata
|
||||
|
||||
audiobookshelf_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/audiobookshelf_config
|
||||
|
||||
audiobooks_nfs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=192.168.1.194,nfsvers=4
|
||||
device: ":/volume2/Storage/Audiobooks"
|
||||
|
||||
podcasts_nfs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=192.168.1.194,nfsvers=4
|
||||
device: ":/volume2/Storage/Podcasts"
|
110
Authentik/.drone.yml
Normal file
110
Authentik/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Authentik
|
||||
URL: authentik.alexlebens.net authentikldap.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Authentik failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Authentik failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Authentik succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Authentik failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
17
Authentik/.env
Normal file
17
Authentik/.env
Normal file
@@ -0,0 +1,17 @@
|
||||
POSTGRES_PASSWORD='0dJ+B16mOL7J25Quw3PzseRJhQfGKUcAuzGFiU7WqoUbBOrH'
|
||||
POSTGRES_USER='authentik'
|
||||
POSTGRES_DB='authentik'
|
||||
|
||||
AUTHENTIK_REDIS__HOST='redis'
|
||||
AUTHENTIK_POSTGRESQL__HOST='postgresql'
|
||||
AUTHENTIK_POSTGRESQL__USER='authentik'
|
||||
AUTHENTIK_POSTGRESQL__NAME='authentik'
|
||||
AUTHENTIK_POSTGRESQL__PASSWORD='0dJ+B16mOL7J25Quw3PzseRJhQfGKUcAuzGFiU7WqoUbBOrH'
|
||||
AUTHENTIK_SECRET_KEY='SY8kT618oeYGjbSShODJk7rxM9JXnw7oa+vSDq7O0XEP1BvQ'
|
||||
AUTHENTIK_ERROR_REPORTING__ENABLED='true'
|
||||
WORKERS='1'
|
||||
|
||||
AUTHENTIK_HOST='https://authentik.alexlebens.net'
|
||||
AUTHENTIK_INSECURE='false'
|
||||
AUTHENTIK_TOKEN='dIA2OZiTUBn4Df7motslW6sm3nDEIbdbursrVhk2sM6LFtbnZdpapLIdQCb3'
|
||||
SSL_CERT_FILE='/etc/ssl/certs/ca-certificates.crt'
|
3
Authentik/README.md
Normal file
3
Authentik/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Authentik
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Authentik)
|
17
Authentik/UptimeKuma/docker-1.json
Normal file
17
Authentik/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Authentik PostgreSQL - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "authentik_postgresql",
|
||||
"docker_host": 1
|
||||
}
|
17
Authentik/UptimeKuma/docker-2.json
Normal file
17
Authentik/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Authentik Redis - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "authentik_redis",
|
||||
"docker_host": 1
|
||||
}
|
17
Authentik/UptimeKuma/docker-3.json
Normal file
17
Authentik/UptimeKuma/docker-3.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Authentik Server - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "authentik_server",
|
||||
"docker_host": 1
|
||||
}
|
17
Authentik/UptimeKuma/docker-4.json
Normal file
17
Authentik/UptimeKuma/docker-4.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Authentik Worker - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "authentik_worker",
|
||||
"docker_host": 1
|
||||
}
|
17
Authentik/UptimeKuma/docker-5.json
Normal file
17
Authentik/UptimeKuma/docker-5.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Authentik LDAP - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "authentik_ldap",
|
||||
"docker_host": 1
|
||||
}
|
15
Authentik/UptimeKuma/http-1.json
Normal file
15
Authentik/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Authentik - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://authentik.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
185
Authentik/docker-compose.yml
Normal file
185
Authentik/docker-compose.yml
Normal file
@@ -0,0 +1,185 @@
|
||||
services:
|
||||
postgresql:
|
||||
container_name: authentik_postgresql
|
||||
env_file:
|
||||
- .env
|
||||
image: postgres:12-alpine
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD-SHELL",
|
||||
"pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"
|
||||
]
|
||||
start_period: 20s
|
||||
interval: 30s
|
||||
retries: 5
|
||||
timeout: 5s
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
authentik:
|
||||
ipv4_address: 172.14.0.3
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- postgressql:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
command: --save 60 1 --loglevel warning
|
||||
container_name: authentik_redis
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "redis-cli ping | grep PONG" ]
|
||||
start_period: 20s
|
||||
interval: 30s
|
||||
retries: 5
|
||||
timeout: 3s
|
||||
image: redis:alpine
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
authentik:
|
||||
ipv4_address: 172.14.0.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- redis:/data
|
||||
|
||||
authentik:
|
||||
command: server
|
||||
container_name: authentik_server
|
||||
depends_on:
|
||||
- postgresql
|
||||
- redis
|
||||
env_file:
|
||||
- .env
|
||||
image: ghcr.io/goauthentik/server:2022.12.2
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.authentik.entrypoints: websecure
|
||||
traefik.http.routers.authentik.rule: Host(`authentik-old.alexlebens.net`)
|
||||
traefik.http.routers.authentik.service: authentik
|
||||
traefik.http.services.authentik.loadbalancer.server.port: 9000
|
||||
traefik.http.routers.authentikoutpost.rule: HostRegexp(`{subdomain:[a-z0-9-]+}.alexlebens.net`) && PathPrefix(`/outpost.goauthentik.io/`)
|
||||
traefik.http.routers.authentikoutpost.entrypoints: websecure
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
authentik:
|
||||
ipv4_address: 172.14.0.10
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
volumes:
|
||||
- media:/media
|
||||
- templates:/templates
|
||||
|
||||
authentik_worker:
|
||||
command: worker
|
||||
container_name: authentik_worker
|
||||
depends_on:
|
||||
- authentik
|
||||
env_file:
|
||||
- .env
|
||||
image: ghcr.io/goauthentik/server:2022.12.2
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
authentik:
|
||||
ipv4_address: 172.14.0.11
|
||||
privileged: true
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
volumes:
|
||||
- backups:/backups
|
||||
- certs:/certs
|
||||
- media:/media
|
||||
- templates:/templates
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
authentik_ldap:
|
||||
container_name: authentik_ldap
|
||||
depends_on:
|
||||
- authentik
|
||||
env_file:
|
||||
- .env
|
||||
image: ghcr.io/goauthentik/ldap:2022.12.2
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
authentik:
|
||||
ipv4_address: 172.14.0.12
|
||||
traefik: null
|
||||
ports:
|
||||
- 192.168.1.15:389:389/tcp
|
||||
- 192.168.1.15:636:636/tcp
|
||||
privileged: true
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
authentik:
|
||||
name: authentik
|
||||
external: false
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.14.0.0/16
|
||||
|
||||
volumes:
|
||||
postgressql:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_postgressql
|
||||
|
||||
redis:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_redis
|
||||
|
||||
backups:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_backups
|
||||
|
||||
certs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_certs
|
||||
|
||||
media:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_media
|
||||
|
||||
templates:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/authentik_templates
|
110
Calibre/.drone.yml
Normal file
110
Calibre/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Calibre
|
||||
URL: calibre.alexlebens.net calibredb.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Calibre failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Calibre failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Calibre succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Calibre failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
3
Calibre/.env
Normal file
3
Calibre/.env
Normal file
@@ -0,0 +1,3 @@
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
TZ=America/Denver
|
3
Calibre/README.md
Normal file
3
Calibre/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Calibre
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Calibre)
|
17
Calibre/UptimeKuma/docker-1.json
Normal file
17
Calibre/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Calibre - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://calibre.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "calibre",
|
||||
"docker_host": 1
|
||||
}
|
17
Calibre/UptimeKuma/docker-2.json
Normal file
17
Calibre/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Calibre DB - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://calibredb.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "calibre_database",
|
||||
"docker_host": 1
|
||||
}
|
15
Calibre/UptimeKuma/http-1.json
Normal file
15
Calibre/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Calibre - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://calibre.alexlebens.net/login",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
15
Calibre/UptimeKuma/http-2.json
Normal file
15
Calibre/UptimeKuma/http-2.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Calibre DB - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://calibredb.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
81
Calibre/docker-compose.yml
Normal file
81
Calibre/docker-compose.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
services:
|
||||
calibre_db:
|
||||
container_name: calibre_database
|
||||
env_file:
|
||||
- .env
|
||||
image: lscr.io/linuxserver/calibre:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.calibre_database.entrypoints: websecure
|
||||
traefik.http.routers.calibre_database.rule: Host(`calibredb.alexlebens.net`)
|
||||
traefik.http.routers.calibre_database.service: calibre_database
|
||||
traefik.http.services.calibre_database.loadbalancer.server.port: 8080
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
privileged: true
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
user: root
|
||||
volumes:
|
||||
- calibre_database_config:/config
|
||||
- books_nfs:/books
|
||||
|
||||
calibre_web:
|
||||
container_name: calibre_web
|
||||
env_file:
|
||||
- .env
|
||||
image: lscr.io/linuxserver/calibre-web:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.calibre_web.entrypoints: websecure
|
||||
traefik.http.routers.calibre_web.rule: Host(`calibre.alexlebens.net`)
|
||||
traefik.http.routers.calibre_web.service: calibre_web
|
||||
traefik.http.routers.calibre_web.middlewares: calibreweb-theme@file
|
||||
traefik.http.services.calibre_web.loadbalancer.server.port: 8083
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
volumes:
|
||||
- calibre_web_config:/config
|
||||
- books_nfs:/books:ro
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
calibre_database_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/calibre_calibre_database
|
||||
|
||||
calibre_web_config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/calibre_web_config
|
||||
|
||||
books_nfs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=192.168.1.194,nfsvers=4
|
||||
device: :/volume2/Storage/Books
|
110
Checkrr/.drone.yml
Normal file
110
Checkrr/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Checkrr
|
||||
URL: checkrr.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Checkrr failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Checkrr failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Checkrr succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Checkrr failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
112
Checkrr/Files/servarr_checkrr/checkrr.yaml
Normal file
112
Checkrr/Files/servarr_checkrr/checkrr.yaml
Normal file
@@ -0,0 +1,112 @@
|
||||
checkrr:
|
||||
checkpath:
|
||||
- "/mnt/store/Anime"
|
||||
- "/mnt/store/Anime Movies"
|
||||
- "/mnt/store/Documentaries"
|
||||
- "/mnt/store/Documentary Shows"
|
||||
- "/mnt/store/Movies"
|
||||
- "/mnt/store/Movies Classics"
|
||||
- "/mnt/store/Movies Foreign"
|
||||
- "/mnt/store/Music/Music Artists"
|
||||
- "/mnt/store/Stand Up"
|
||||
- "/mnt/store/TV Shows"
|
||||
database: /tmp/checkrr.db
|
||||
debug: true
|
||||
csvfile: /tmp/badfiles.csv
|
||||
logfile: /tmp/checkrr.log
|
||||
logjson: false
|
||||
cron: "@daily"
|
||||
ignorehidden: true
|
||||
ignoreexts:
|
||||
- .txt
|
||||
- .nfo
|
||||
- .nfo-orig
|
||||
- .nzb
|
||||
- .url
|
||||
- .db
|
||||
- .srt
|
||||
- .ac3
|
||||
- .m2ts
|
||||
arr:
|
||||
radarr:
|
||||
process: true
|
||||
service: radarr
|
||||
address: 172.27.1.30
|
||||
apikey: e6e3d6f4aafe4e499d970cfcbf042db9
|
||||
baseurl: /
|
||||
port: 7878
|
||||
radarranime:
|
||||
process: true
|
||||
service: radarr
|
||||
address: 172.27.1.61
|
||||
apikey: fb126bad31d64d43bb669ad81329954d
|
||||
baseurl: /
|
||||
port: 7878
|
||||
radarrart:
|
||||
process: true
|
||||
service: radarr
|
||||
address: 172.27.1.62
|
||||
apikey: 32365893c4234f8a9ad96d68d6e7a520
|
||||
baseurl: /
|
||||
port: 7878
|
||||
radarrdocumentaries:
|
||||
process: true
|
||||
service: radarr
|
||||
address: 172.27.1.63
|
||||
apikey: fd03f47363324096a56d0a453623420b
|
||||
baseurl: /
|
||||
port: 7878
|
||||
radarrstandup:
|
||||
process: true
|
||||
service: radarr
|
||||
address: 172.27.1.64
|
||||
apikey: c7c425b3fbcf4112895aceec7729f4d1
|
||||
baseurl: /
|
||||
port: 7878
|
||||
sonarr:
|
||||
process: true
|
||||
service: sonarr
|
||||
address: 172.27.1.31
|
||||
apikey: 7f0dfeea4b9f410d96b5ffa2f809d1e8
|
||||
baseurl: /
|
||||
port: 8989
|
||||
sonarranime:
|
||||
process: true
|
||||
service: sonarr
|
||||
address: 172.27.1.70
|
||||
apikey: a2f10e70559c4ee3b8ff1d6cdc5a41f1
|
||||
baseurl: /
|
||||
port: 8989
|
||||
sonarrdocumentaries:
|
||||
process: true
|
||||
service: sonarr
|
||||
address: 172.27.1.72
|
||||
apikey: 3ed988c3731b45ad8124b7d55b620d6b
|
||||
baseurl: /
|
||||
port: 8989
|
||||
lidarr:
|
||||
service: lidarr
|
||||
process: true
|
||||
address: 172.27.1.32
|
||||
apikey: d25bd6d24f4e4b90a21fc5b70bcb9fd9
|
||||
baseurl: /
|
||||
port: 8686
|
||||
notifications:
|
||||
discord:
|
||||
url: https://discord.com/api/webhooks/988292688501698590/7rh8CfveLozzH9qTJdLK6zxBAwpPqzC6jeDGwo92xoOhHgHR7UuWIsnS1fJUdriErpWN
|
||||
notificationtypes:
|
||||
- reacquire
|
||||
- unknowndeleted
|
||||
- unknowndetected
|
||||
- startrun
|
||||
- endrun
|
||||
pushover:
|
||||
apitoken: ae7g9zjetygqc1myexgszjp44z5xx8
|
||||
recipient: pixel7
|
||||
notificationtypes:
|
||||
- reacquire
|
||||
webserver:
|
||||
port: 8585
|
||||
baseurl: "/"
|
||||
trustedproxies:
|
||||
- 172.27.0.0/16
|
3
Checkrr/README.md
Normal file
3
Checkrr/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Checkrr
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Checkrr)
|
17
Checkrr/UptimeKuma/docker-1.json
Normal file
17
Checkrr/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Checkrr - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://checkrr.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "checkrr",
|
||||
"docker_host": 1
|
||||
}
|
15
Checkrr/UptimeKuma/http-1.json
Normal file
15
Checkrr/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Checkrr - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://checkrr.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
56
Checkrr/docker-compose.yml
Normal file
56
Checkrr/docker-compose.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
services:
|
||||
checkrr:
|
||||
command:
|
||||
- --config-file=/tmp/checkrr.yaml
|
||||
container_name: checkrr
|
||||
environment:
|
||||
- TZ=America/Denver
|
||||
image: aetaric/checkrr:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.checkrr.entrypoints: websecure
|
||||
traefik.http.routers.checkrr.rule: Host(`checkrr.alexlebens.net`)
|
||||
traefik.http.routers.checkrr.service: checkrr
|
||||
traefik.http.routers.checkrr.middlewares: authentik@file
|
||||
traefik.http.services.checkrr.loadbalancer.server.port: 8585
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
privileged: true
|
||||
user: root
|
||||
volumes:
|
||||
- checkrr:/tmp
|
||||
- storage_nfs:/mnt/store
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
checkrr:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/servarr_checkrr
|
||||
|
||||
# storage:
|
||||
# driver: local
|
||||
# driver_opts:
|
||||
# type: cifs
|
||||
# o: username=aurailious,password=24wrsfxv@$$WRSFXV,file_mode=0777,dir_mode=0777
|
||||
# device: "//192.168.1.194/Storage"
|
||||
|
||||
storage_nfs:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: addr=192.168.1.194,nfsvers=4
|
||||
device: :/volume2/Storage
|
110
CloudflareDDNS/.drone.yml
Normal file
110
CloudflareDDNS/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: CloudflareDDNS
|
||||
URL: ""
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for CloudflareDDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for CloudflareDDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CloudflareDDNS succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CloudflareDDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
3
CloudflareDDNS/README.md
Normal file
3
CloudflareDDNS/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# CloudflareDDNS
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/CloudflareDDNS)
|
17
CloudflareDDNS/UptimeKuma/docker-1.json
Normal file
17
CloudflareDDNS/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "CloudflareDDNS - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://www.cloudflare.com",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "cloudflare_ddns",
|
||||
"docker_host": 1
|
||||
}
|
17
CloudflareDDNS/UptimeKuma/docker-2.json
Normal file
17
CloudflareDDNS/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "CloudflareDDNS Synology - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://www.cloudflare.com",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "cloudflare_ddns_synology",
|
||||
"docker_host": 1
|
||||
}
|
55
CloudflareDDNS/docker-compose.yml
Normal file
55
CloudflareDDNS/docker-compose.yml
Normal file
@@ -0,0 +1,55 @@
|
||||
services:
|
||||
cloudflare_ddns_root:
|
||||
container_name: cloudflare_ddns_root
|
||||
environment:
|
||||
- API_KEY=t48J4O_n5uNYHGXfCHZ1SRbCLwNTZAR6n1sZHj6d
|
||||
- ZONE=alexlebens.net
|
||||
- PROXIED=false
|
||||
image: oznu/cloudflare-ddns:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: unless-stopped
|
||||
|
||||
cloudflare_ddns_wildcard:
|
||||
container_name: cloudflare_ddns_wildcard
|
||||
environment:
|
||||
- API_KEY=VfWsmY_1_hYyT-w4TNwR-3yKp4UvkoY_BQ8KUxJf
|
||||
- ZONE=alexlebens.net
|
||||
- SUBDOMAIN=*
|
||||
- PROXIED=false
|
||||
image: oznu/cloudflare-ddns:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: unless-stopped
|
||||
|
||||
cloudflare_ddns_synology:
|
||||
container_name: cloudflare_ddns_synology
|
||||
environment:
|
||||
- API_KEY=t48J4O_n5uNYHGXfCHZ1SRbCLwNTZAR6n1sZHj6d
|
||||
- ZONE=alexlebens.net
|
||||
- SUBDOMAIN=synology
|
||||
- PROXIED=false
|
||||
image: oznu/cloudflare-ddns:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: unless-stopped
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
110
CodeServer/.drone.yml
Normal file
110
CodeServer/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: CodeServer
|
||||
URL: codeserver.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for CodeServer failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for CodeServer failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CodeServer succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CodeServer failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
3
CodeServer/.env
Normal file
3
CodeServer/.env
Normal file
@@ -0,0 +1,3 @@
|
||||
DOCKER_USER=1000
|
||||
USER=1000
|
||||
HOME=/home/coder
|
3
CodeServer/README.md
Normal file
3
CodeServer/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# CodeServer
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/CodeServer)
|
17
CodeServer/UptimeKuma/docker-1.json
Normal file
17
CodeServer/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "CodeServer - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://codeserver.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "code_server",
|
||||
"docker_host": 1
|
||||
}
|
15
CodeServer/UptimeKuma/http-1.json
Normal file
15
CodeServer/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "CodeServer - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://codeserver.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
39
CodeServer/docker-compose.yml
Normal file
39
CodeServer/docker-compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
services:
|
||||
code_server:
|
||||
command: --auth none --disable-telemetry
|
||||
container_name: code_server
|
||||
env_file:
|
||||
- .env
|
||||
image: 'codercom/code-server:latest'
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.code_server.entrypoints: websecure
|
||||
traefik.http.routers.code_server.rule: Host(`codeserver.alexlebens.net`)
|
||||
traefik.http.routers.code_server.service: code_server
|
||||
traefik.http.routers.code_server.middlewares: authentik@file
|
||||
traefik.http.services.code_server.loadbalancer.server.port: 8080
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- home:/home/coder/
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
home:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /opt/code_server_home/
|
110
CoreDNS/.drone.yml
Executable file
110
CoreDNS/.drone.yml
Executable file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: CoreDNS
|
||||
URL: ""
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for CoreDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for CoreDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CoreDNS succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for CoreDNS failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
20
CoreDNS/Files/coredns_config/Corefile
Executable file
20
CoreDNS/Files/coredns_config/Corefile
Executable file
@@ -0,0 +1,20 @@
|
||||
alexlebens.net {
|
||||
file /etc/coredns/alexlebens.net.zone {
|
||||
reload 10s
|
||||
}
|
||||
bufsize 4096
|
||||
log
|
||||
errors
|
||||
prometheus :9153
|
||||
reload 30s
|
||||
auto
|
||||
}
|
||||
|
||||
.:53 {
|
||||
forward . 172.27.1.3
|
||||
bufsize 4096
|
||||
log
|
||||
errors
|
||||
prometheus :9153
|
||||
reload 30s
|
||||
}
|
89
CoreDNS/Files/coredns_config/alexlebens.net.zone
Executable file
89
CoreDNS/Files/coredns_config/alexlebens.net.zone
Executable file
@@ -0,0 +1,89 @@
|
||||
$ORIGIN alexlebens.net.
|
||||
$TTL 86400
|
||||
@ IN SOA patryk.ns.cloudflare.com. alexanderlebens.gmail.com. (
|
||||
2021121701 ; serial
|
||||
3H ; refresh after 3 hours
|
||||
1H ; retry after 1 hour
|
||||
1W ; expire after 1 week
|
||||
1D) ; minimum TTL of 1 day
|
||||
|
||||
; Name Server
|
||||
IN NS patryk.ns.cloudflare.com.
|
||||
IN NS veda.ns.cloudflare.com.
|
||||
; IN NS dns1.alexlebens.net.
|
||||
|
||||
; Name Server
|
||||
IN NS patryk.ns.cloudflare.com.
|
||||
IN NS veda.ns.cloudflare.com.
|
||||
; IN NS dns1.alexlebens.net.
|
||||
|
||||
alexlebens.net. IN A 192.168.1.15
|
||||
www IN A 192.168.1.15
|
||||
|
||||
dns1 IN A 192.168.1.15
|
||||
|
||||
pd04wd IN A 192.168.1.115
|
||||
ps03fd IN A 192.168.1.15
|
||||
ps08rp IN A 192.168.1.136
|
||||
|
||||
talos-ibv-goo IN A 192.168.1.16
|
||||
|
||||
talos-luo-mqa IN A 192.168.1.192
|
||||
talos-uk2-e0z IN A 192.168.1.39
|
||||
talos-yed-cb6 IN A 192.168.1.126
|
||||
|
||||
talos IN A 192.168.1.192
|
||||
talos IN A 192.168.1.39
|
||||
talos IN A 192.168.1.126
|
||||
|
||||
airgradientbr IN A 192.168.1.100
|
||||
hdhr IN A 192.168.1.213
|
||||
pibox IN A 192.168.1.40
|
||||
pikvm IN A 192.168.1.57
|
||||
synology IN A 192.168.1.55
|
||||
synologybond IN A 192.168.1.194
|
||||
unifi IN A 192.168.1.1
|
||||
|
||||
traefik-ps08rp IN A 192.168.1.136
|
||||
technitium-ps08rp IN A 192.168.1.136
|
||||
|
||||
|
||||
pihole IN A 192.168.1.15
|
||||
|
||||
|
||||
alertmanager IN A 192.168.1.16
|
||||
argocd IN A 192.168.1.16
|
||||
audiobookshelf IN A 192.168.1.16
|
||||
authentik IN A 192.168.1.16
|
||||
calibre IN A 192.168.1.16
|
||||
codeserver IN A 192.168.1.16
|
||||
kubernetes IN A 192.168.1.16
|
||||
gitea IN A 192.168.1.16
|
||||
grafana IN A 192.168.1.16
|
||||
homeassistant IN A 192.168.1.16
|
||||
homepage IN A 192.168.1.16
|
||||
jellyfin IN A 192.168.1.16
|
||||
kargo IN A 192.168.1.16
|
||||
minio IN A 192.168.1.16
|
||||
minio-console IN A 192.168.1.16
|
||||
navidrome IN A 192.168.1.16
|
||||
n8n IN A 192.168.1.16
|
||||
outline IN A 192.168.1.16
|
||||
pgadmin IN A 192.168.1.16
|
||||
plex IN A 192.168.1.16
|
||||
prometheus IN A 192.168.1.16
|
||||
promtail IN A 192.168.1.16
|
||||
rss IN A 192.168.1.16
|
||||
tautulli IN A 192.168.1.16
|
||||
traefik IN A 192.168.1.16
|
||||
tubearchivist IN A 192.168.1.16
|
||||
vault IN A 192.168.1.16
|
||||
vikunja IN A 192.168.1.16
|
||||
overseerr IN A 192.168.1.16
|
||||
prowlarr IN A 192.168.1.16
|
||||
readarr IN A 192.168.1.16
|
||||
radarr IN A 192.168.1.16
|
||||
sonarr IN A 192.168.1.16
|
||||
lidarr IN A 192.168.1.16
|
||||
tdaarr IN A 192.168.1.16
|
||||
qbittorrent IN A 192.168.1.16
|
3
CoreDNS/README.md
Executable file
3
CoreDNS/README.md
Executable file
@@ -0,0 +1,3 @@
|
||||
# CoreDNS
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/CoreDNS)
|
17
CoreDNS/UptimeKuma/docker-1.json
Executable file
17
CoreDNS/UptimeKuma/docker-1.json
Executable file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "CoreDNS - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "coredns",
|
||||
"docker_host": 1
|
||||
}
|
33
CoreDNS/docker-compose.yml
Executable file
33
CoreDNS/docker-compose.yml
Executable file
@@ -0,0 +1,33 @@
|
||||
services:
|
||||
coredns:
|
||||
command: "-conf /etc/coredns/Corefile"
|
||||
container_name: coredns
|
||||
image: coredns/coredns:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik:
|
||||
ipv4_address: 172.27.1.2
|
||||
ports:
|
||||
- 192.168.1.15:53:53/tcp
|
||||
- 192.168.1.15:53:53/udp
|
||||
restart: always
|
||||
privileged: true
|
||||
volumes:
|
||||
- config:/etc/coredns
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/coredns_config
|
41
DeploymentScripts/.drone.yml
Normal file
41
DeploymentScripts/.drone.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: trigger
|
||||
|
||||
steps:
|
||||
- name: trigger
|
||||
image: plugins/downstream
|
||||
settings:
|
||||
server: https://drone.alexlebens.net
|
||||
token:
|
||||
from_secret: drone_token
|
||||
fork: true
|
||||
repositories:
|
||||
- alexlebens/DroneImage
|
||||
|
||||
- name: Nofification > Discord | Trigger - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Trigger executed from Deployment Scripts to DroneImage
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Trigger - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Trigger failed from Deployment Scripts to DroneImage
|
||||
when:
|
||||
status:
|
||||
- failure
|
111
DeploymentScripts/configuration.sh
Normal file
111
DeploymentScripts/configuration.sh
Normal file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env bash
|
||||
#set -e
|
||||
|
||||
|
||||
echo ">>>> Configuration"
|
||||
WORKINGDIR=$(pwd)
|
||||
|
||||
echo ">>> Apply"
|
||||
|
||||
echo ">> Storage"
|
||||
|
||||
PATH_FAILURE=true
|
||||
PATHS=$(yq '.volumes[].driver_opts.device | select(. > "/var*")' docker-compose.yml)
|
||||
|
||||
for dir in $PATHS; do
|
||||
if ! ssh -q drone@$HOST_IP "sudo test -d $dir"; then
|
||||
echo "Missing path: $dir"
|
||||
ssh -q drone@$HOST_IP "sudo test -d $dir"
|
||||
|
||||
ssh drone@$HOST_IP "sudo mkdir -p $dir"
|
||||
ssh drone@$HOST_IP "sudo chown alexlebens:alexlebens $dir"
|
||||
|
||||
if ! ssh -q drone@$HOST_IP "sudo test -d $dir"; then
|
||||
echo "Failed to create path: $dir"
|
||||
ssh -q drone@$HOST_IP "sudo test -d $dir"
|
||||
else
|
||||
echo "Path created: $dir"
|
||||
PATH_FAILURE=false
|
||||
fi
|
||||
else
|
||||
echo "Path found: $dir"
|
||||
PATH_FAILURE=false
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
echo ">>> Checks"
|
||||
|
||||
echo ">> DNS"
|
||||
|
||||
URL_CHECK=true
|
||||
URL_FAILURE=false
|
||||
|
||||
if [ -n "$URL" ]; then
|
||||
for i in $URL; do
|
||||
if [ "$(dig +short -t a $i)" ]; then
|
||||
echo "URL found: $i"
|
||||
URL_CHECK=false
|
||||
else
|
||||
echo "URL not found: $i"
|
||||
URL_FAILURE=true
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "No URL set"
|
||||
URL_CHECK=false
|
||||
fi
|
||||
|
||||
|
||||
echo ">> Uptime"
|
||||
|
||||
cd UptimeKuma
|
||||
|
||||
UPTIME_CHECK=true
|
||||
UPTIME_FAILURE=false
|
||||
|
||||
TOKEN=$(curl -X 'POST' "${UPTIMEKUMA_URL}/login/access-token" -H 'accept: application/json' -H 'Content-Type: application/x-www-form-urlencoded' -d "grant_type=&username=${UPTIMEKUMA_NAME}&password=${UPTIMEKUMA_PASSWORD}&scope=&client_id=&client_secret=" | jq -r ".access_token")
|
||||
MONITORS=$(curl -X 'GET' "${UPTIMEKUMA_URL}/monitors" -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" -s | jq --arg PACKAGE $PACKAGE '[ .monitors[] | select( .name | contains($PACKAGE))]')
|
||||
|
||||
echo "Found the following monitors:"
|
||||
echo "$MONITORS" | jq -r '.[].name'
|
||||
|
||||
for file in *; do
|
||||
IFS_HOLD=$IFS
|
||||
IFS=$'\n'
|
||||
|
||||
for type in $(echo "$MONITORS" | jq -r '.[].name'); do
|
||||
MONITOR_NAME=$(cat $file | jq -r '.name')
|
||||
|
||||
echo "Comparing '$MONITOR_NAME' and '$type'"
|
||||
if [ "$MONITOR_NAME" == $type ]; then
|
||||
echo "Found monitor for $file"
|
||||
UPTIME_CHECK=false
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
|
||||
IFS=$IFS_HOLD
|
||||
|
||||
echo "Missing monitor for $file"
|
||||
RESPONSE=$(curl -X POST "${UPTIMEKUMA_URL}/monitors" -H 'accept: application/json' -H "Authorization: Bearer ${TOKEN}" -H 'Content-Type: application/json' -d "$(cat $file)" -s)
|
||||
RESPONSE_MESSAGE=$(echo $RESPONSE | jq -r '.msg')
|
||||
|
||||
if [ "$RESPONSE_MESSAGE" == "Added Successfully." ]; then
|
||||
echo "Created monitor for $file"
|
||||
UPTIME_CHECK=false
|
||||
else
|
||||
echo "Failed creating monitor for $file: $RESPONSE_MESSAGE"
|
||||
echo "$RESPONSE"
|
||||
UPTIME_FAILURE=true
|
||||
fi
|
||||
done
|
||||
cd $WORKINGDIR
|
||||
|
||||
|
||||
echo ">>> Exit"
|
||||
|
||||
if $URL_CHECK || $URL_FAILURE || $UPTIME_CHECK || $UPTIME_FAILURE; then
|
||||
echo "Exiting with Errors"
|
||||
echo "URL_CHECK: $URL_CHECK || URL_FAILURE: $URL_FAILURE || UPTIME_CHECK: $UPTIME_CHECK || UPTIME_FAILURE: $UPTIME_FAILURE"
|
||||
fi
|
46
DeploymentScripts/deploy.sh
Normal file
46
DeploymentScripts/deploy.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
sleep 5
|
||||
|
||||
|
||||
echo ">>>> Deploy"
|
||||
WORKINGDIR=$(pwd)
|
||||
|
||||
echo ">>> Files"
|
||||
|
||||
if test -d "Files"; then
|
||||
echo "Found files to copy"
|
||||
cd Files
|
||||
|
||||
for dir in *; do
|
||||
echo "Copying files for $dir"
|
||||
FILE_PATH="/var/lib/docker/volumes/partition/"
|
||||
|
||||
echo "Copying directory '$dir' to $FILE_PATH"
|
||||
rsync --rsync-path="sudo rsync" --progress -aiv $dir drone@$HOST_IP:$FILE_PATH
|
||||
|
||||
ssh drone@$HOST_IP "sudo chown -R alexlebens:alexlebens $FILE_PATH/$dir"
|
||||
# ssh drone@$HOST_IP "sudo chmod -R 600 $FILE_PATH/$dir"
|
||||
done
|
||||
|
||||
echo "Finished copying files"
|
||||
cd $WORKINGDIR
|
||||
else
|
||||
echo "No files to copy"
|
||||
fi
|
||||
|
||||
|
||||
echo ">>> Compose"
|
||||
|
||||
if ! test -f "./docker-compose.yml"
|
||||
then
|
||||
echo ">> ERROR: No docker-compose.yml in directory"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo ">> Deploy"
|
||||
|
||||
docker compose --project-name $(echo $PACKAGE | tr "[:upper:]" "[:lower:]") stop
|
||||
sleep 10
|
||||
docker compose --project-name $(echo $PACKAGE | tr "[:upper:]" "[:lower:]") up --wait
|
||||
sleep 1
|
20
DeploymentScripts/tests.sh
Normal file
20
DeploymentScripts/tests.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
sleep 5
|
||||
|
||||
|
||||
echo ">>>> Tests"
|
||||
|
||||
echo ">>> Syntax Check"
|
||||
|
||||
if ! test -f "./docker-compose.yml"
|
||||
then
|
||||
echo ">> ERROR: No docker-compose.yml in directory"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo ">> Syntax check"
|
||||
|
||||
docker compose convert -q
|
||||
|
||||
echo "Passed syntax check"
|
110
DockerRegistry/.drone.yml
Normal file
110
DockerRegistry/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: DockerRegistry
|
||||
URL: ""
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for DockerRegistry failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for DockerRegistry failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for DockerRegistry succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for DockerRegistry failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
5
DockerRegistry/.env
Normal file
5
DockerRegistry/.env
Normal file
@@ -0,0 +1,5 @@
|
||||
# REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt
|
||||
# REGISTRY_HTTP_TLS_KEY=/certs/registry.key
|
||||
# REGISTRY_AUTH=htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
|
||||
# REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
|
3
DockerRegistry/README.md
Normal file
3
DockerRegistry/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# DockerRegistry
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/DockerRegistry)
|
17
DockerRegistry/UptimeKuma/docker-1.json
Normal file
17
DockerRegistry/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Docker Registry - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://ps03fd.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "docker_registry",
|
||||
"docker_host": 1
|
||||
}
|
33
DockerRegistry/docker-compose.yml
Normal file
33
DockerRegistry/docker-compose.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
services:
|
||||
registry:
|
||||
container_name: docker_registry
|
||||
env_file:
|
||||
- .env
|
||||
image: registry:2
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
ports:
|
||||
- 5000:5000
|
||||
restart: always
|
||||
privileged: true
|
||||
user: root
|
||||
volumes:
|
||||
- registry:/var/lib/registry
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
registry:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/docker_registry
|
110
DroneCI/.drone.yml
Normal file
110
DroneCI/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: DroneCI
|
||||
URL: drone.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for DroneCI failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for DroneCI failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for DroneCI succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for DroneCI failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
7
DroneCI/.env
Normal file
7
DroneCI/.env
Normal file
@@ -0,0 +1,7 @@
|
||||
DRONE_GITEA_SERVER=https://gitea.alexlebens.net
|
||||
DRONE_GITEA_CLIENT_ID=7c34bd96-3dd6-4d29-aef8-193df1fc9d71
|
||||
DRONE_GITEA_CLIENT_SECRET=gto_ylpzlyzggy3cd6lrynbmcyzy6mgevruulaktwckyvxq3q5i37xea
|
||||
DRONE_RPC_SECRET=c4060eb0bb4e7ab9f5cdeb5fa87698f7
|
||||
DRONE_SERVER_HOST=https://drone.alexlebens.net
|
||||
DRONE_SERVER_PROTO=https
|
||||
DRONE_USER_CREATE=username:alexlebens,admin:true
|
4
DroneCI/.run.env
Normal file
4
DroneCI/.run.env
Normal file
@@ -0,0 +1,4 @@
|
||||
DRONE_RPC_PROTO: http
|
||||
DRONE_RPC_HOST: 172.22.0.11
|
||||
DRONE_RPC_SECRET: c4060eb0bb4e7ab9f5cdeb5fa87698f7
|
||||
DRONE_RUNNER_CAPACITY: 2
|
3
DroneCI/README.md
Normal file
3
DroneCI/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# DroneCI
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/DroneCI)
|
17
DroneCI/UptimeKuma/docker-1.json
Normal file
17
DroneCI/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "DroneCI - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://drone.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "drone",
|
||||
"docker_host": 1
|
||||
}
|
17
DroneCI/UptimeKuma/docker-2.json
Normal file
17
DroneCI/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "DroneCI Runner 1 - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://drone.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "drone_runner_1",
|
||||
"docker_host": 1
|
||||
}
|
17
DroneCI/UptimeKuma/docker-3.json
Normal file
17
DroneCI/UptimeKuma/docker-3.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "DroneCI Runner 2 - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://drone.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "drone_runner_2",
|
||||
"docker_host": 1
|
||||
}
|
15
DroneCI/UptimeKuma/http-1.json
Normal file
15
DroneCI/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "DroneCI - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://drone.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
91
DroneCI/docker-compose.yml
Normal file
91
DroneCI/docker-compose.yml
Normal file
@@ -0,0 +1,91 @@
|
||||
services:
|
||||
drone:
|
||||
container_name: drone
|
||||
env_file:
|
||||
- .env
|
||||
image: drone/drone:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.drone.entrypoints: websecure
|
||||
traefik.http.routers.drone.rule: Host(`drone.alexlebens.net`)
|
||||
traefik.http.routers.drone.service: drone
|
||||
traefik.http.services.drone.loadbalancer.server.port: 80
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
drone:
|
||||
ipv4_address: 172.22.0.11
|
||||
traefik: null
|
||||
restart: always
|
||||
volumes:
|
||||
- drone_data:/data
|
||||
|
||||
drone_runner_1:
|
||||
container_name: drone_runner_1
|
||||
depends_on:
|
||||
- drone
|
||||
env_file:
|
||||
- .run.env
|
||||
environment:
|
||||
DRONE_RUNNER_NAME: drone_runner_1
|
||||
DRONE_RUNNER_NETWORKS: traefik
|
||||
image: drone/drone-runner-docker:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
drone:
|
||||
ipv4_address: 172.22.0.12
|
||||
privileged: true
|
||||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
drone_runner_2:
|
||||
container_name: drone_runner_2
|
||||
depends_on:
|
||||
- drone
|
||||
env_file:
|
||||
- .run.env
|
||||
environment:
|
||||
DRONE_RUNNER_NAME: drone_runner_2
|
||||
DRONE_RUNNER_NETWORKS: traefik
|
||||
image: drone/drone-runner-docker:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
drone:
|
||||
ipv4_address: 172.22.0.13
|
||||
privileged: true
|
||||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
drone:
|
||||
name: drone
|
||||
external: false
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.22.0.0/16
|
||||
|
||||
volumes:
|
||||
drone_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/drone_data
|
63
DroneImage/.drone.yml
Normal file
63
DroneImage/.drone.yml
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy_image
|
||||
|
||||
steps:
|
||||
- name: pull-scripts
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git clone https://gitea.alexlebens.net/alexlebens/DeploymentScripts.git
|
||||
|
||||
- name: docker-cron
|
||||
image: plugins/docker
|
||||
settings:
|
||||
repo: ps03fd.alexlebens.net:5000/droneimage
|
||||
registry: ps03fd.alexlebens.net:5000
|
||||
insecure: true
|
||||
dockerfile: ./Dockerfile
|
||||
tags: latest
|
||||
when:
|
||||
event:
|
||||
- cron
|
||||
cron:
|
||||
include:
|
||||
- nightly
|
||||
|
||||
- name: docker-main
|
||||
image: plugins/docker
|
||||
settings:
|
||||
repo: ps03fd.alexlebens.net:5000/droneimage
|
||||
registry: ps03fd.alexlebens.net:5000
|
||||
insecure: true
|
||||
dockerfile: ./Dockerfile
|
||||
tags: latest
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Build - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Succeeded building Drone Image
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Build - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Failed building Drone Image
|
||||
when:
|
||||
status:
|
||||
- failure
|
20
DroneImage/Dockerfile
Normal file
20
DroneImage/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM alpine:latest
|
||||
|
||||
# Install base packages
|
||||
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
|
||||
RUN apk add --update --no-cache \
|
||||
bash \
|
||||
git \
|
||||
openssh \
|
||||
curl \
|
||||
docker \
|
||||
docker-cli \
|
||||
docker-cli-compose \
|
||||
bind-tools \
|
||||
yq \
|
||||
jq \
|
||||
rsync
|
||||
|
||||
# Install deployment scripts
|
||||
COPY ./DeploymentScripts /scripts
|
||||
RUN chmod -R +x /scripts
|
3
DroneImage/README.md
Normal file
3
DroneImage/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# DroneImage
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/DroneImage)
|
110
Firefly/.drone.yml
Normal file
110
Firefly/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Firefly
|
||||
URL: firefly.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Firefly failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Firefly failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Firefly succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Firefly failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
142
Firefly/.env
Normal file
142
Firefly/.env
Normal file
@@ -0,0 +1,142 @@
|
||||
TZ=America/Denver
|
||||
|
||||
# App settings
|
||||
SITE_OWNER=alexanderlebens@gmail.com
|
||||
APP_ENV=local
|
||||
APP_DEBUG=false
|
||||
APP_KEY=SomeRandomStringOf32CharsExactly
|
||||
APP_URL=https://firefly.alexlebens.net
|
||||
APP_LOG_LEVEL=notice
|
||||
AUDIT_LOG_LEVEL=info
|
||||
|
||||
DEFAULT_LANGUAGE=en_US
|
||||
DEFAULT_LOCALE=equal
|
||||
TRUSTED_PROXIES=**
|
||||
LOG_CHANNEL=stack
|
||||
|
||||
# Used when logging to papertrail:
|
||||
PAPERTRAIL_HOST=
|
||||
PAPERTRAIL_PORT=
|
||||
|
||||
# Database credentials
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=172.27.1.55
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=firefly
|
||||
DB_USERNAME=firefly
|
||||
DB_PASSWORD=secret_firefly_password
|
||||
|
||||
MYSQL_RANDOM_ROOT_PASSWORD=yes
|
||||
MYSQL_USER=firefly
|
||||
MYSQL_PASSWORD=secret_firefly_password
|
||||
MYSQL_DATABASE=firefly
|
||||
|
||||
MYSQL_USE_SSL=false
|
||||
MYSQL_SSL_VERIFY_SERVER_CERT=true
|
||||
MYSQL_SSL_CAPATH=/etc/ssl/certs/
|
||||
MYSQL_SSL_CA=
|
||||
MYSQL_SSL_CERT=
|
||||
MYSQL_SSL_KEY=
|
||||
MYSQL_SSL_CIPHER=
|
||||
|
||||
# Cache
|
||||
CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
|
||||
REDIS_SCHEME=tcp
|
||||
REDIS_PATH=
|
||||
REDIS_HOST=
|
||||
REDIS_PORT=
|
||||
REDIS_USERNAME=
|
||||
REDIS_PASSWORD=.
|
||||
REDIS_DB="0"
|
||||
REDIS_CACHE_DB="1"
|
||||
|
||||
# Cookie settings
|
||||
COOKIE_PATH="/"
|
||||
COOKIE_DOMAIN=
|
||||
COOKIE_SECURE=false
|
||||
COOKIE_SAMESITE=lax
|
||||
|
||||
# Mail
|
||||
MAIL_MAILER=log
|
||||
MAIL_HOST=null
|
||||
MAIL_PORT=2525
|
||||
MAIL_FROM=changeme@example.com
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
|
||||
# Other mail drivers:
|
||||
MAILGUN_DOMAIN=
|
||||
MAILGUN_SECRET=
|
||||
MAILGUN_ENDPOINT=api.mailgun.net
|
||||
|
||||
MANDRILL_SECRET=
|
||||
SPARKPOST_SECRET=
|
||||
|
||||
# Firefly III can send you the following messages.
|
||||
SEND_REGISTRATION_MAIL=true
|
||||
SEND_ERROR_MESSAGE=true
|
||||
SEND_LOGIN_NEW_IP_WARNING=true
|
||||
|
||||
# These messages contain (sensitive) transaction information:
|
||||
SEND_REPORT_JOURNALS=true
|
||||
|
||||
# Set this value to true if you want to set the location
|
||||
ENABLE_EXTERNAL_MAP=false
|
||||
|
||||
# The map will default to this location:
|
||||
MAP_DEFAULT_LAT=51.983333
|
||||
MAP_DEFAULT_LONG=5.916667
|
||||
MAP_DEFAULT_ZOOM=6
|
||||
|
||||
# Firefly III authentication settings
|
||||
# Firefly III supports a few authentication methods:
|
||||
# - 'web' (default, uses built in DB)
|
||||
# - 'remote_user_guard' for Authelia etc
|
||||
# https://docs.firefly-iii.org/advanced-installation/authentication
|
||||
AUTHENTICATION_GUARD=web
|
||||
AUTHENTICATION_GUARD_HEADER=REMOTE_USER
|
||||
AUTHENTICATION_GUARD_EMAIL=
|
||||
CUSTOM_LOGOUT_URL=
|
||||
|
||||
# You can disable the X-Frame-Options header if it interferes with tools like Organizr.
|
||||
DISABLE_FRAME_HEADER=false
|
||||
|
||||
# You can disable the Content Security Policy header when you're using an ancient browser
|
||||
DISABLE_CSP_HEADER=false
|
||||
|
||||
# If you wish to track your own behavior over Firefly III, set valid analytics tracker information here.
|
||||
TRACKER_SITE_ID=
|
||||
TRACKER_URL=
|
||||
|
||||
# Firefly III supports webhooks. These are security sensitive and must be enabled manually first.
|
||||
ALLOW_WEBHOOKS=false
|
||||
|
||||
# The static cron job token can be useful when you use Docker and wish to manage cron jobs.
|
||||
STATIC_CRON_TOKEN=
|
||||
|
||||
# You can fine tune the start-up of a Docker container by editing these environment variables.
|
||||
DKR_BUILD_LOCALE=false
|
||||
DKR_CHECK_SQLITE=true
|
||||
DKR_RUN_MIGRATION=true
|
||||
DKR_RUN_UPGRADE=true
|
||||
DKR_RUN_VERIFY=true
|
||||
DKR_RUN_REPORT=true
|
||||
DKR_RUN_PASSPORT_INSTALL=true
|
||||
|
||||
# Leave the following configuration vars as is.
|
||||
# Unless you like to tinker and know what you're doing.
|
||||
APP_NAME=FireflyIII
|
||||
BROADCAST_DRIVER=log
|
||||
QUEUE_DRIVER=sync
|
||||
CACHE_PREFIX=firefly
|
||||
PUSHER_KEY=
|
||||
IPINFO_TOKEN=
|
||||
PUSHER_SECRET=
|
||||
PUSHER_ID=
|
||||
DEMO_USERNAME=
|
||||
DEMO_PASSWORD=
|
||||
IS_HEROKU=false
|
||||
FIREFLY_III_LAYOUT=v1
|
3
Firefly/README.md
Normal file
3
Firefly/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Firefly
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Firefly)
|
17
Firefly/UptimeKuma/docker-1.json
Normal file
17
Firefly/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Firefly MariaDB - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://firefly.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "firefly_mariadb",
|
||||
"docker_host": 1
|
||||
}
|
17
Firefly/UptimeKuma/docker-2.json
Normal file
17
Firefly/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Firefly Server - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://firefly.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "firefly_server",
|
||||
"docker_host": 1
|
||||
}
|
17
Firefly/UptimeKuma/docker-3.json
Normal file
17
Firefly/UptimeKuma/docker-3.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Firefly Plaid - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://firefly.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "firefly_plaid",
|
||||
"docker_host": 1
|
||||
}
|
15
Firefly/UptimeKuma/http-1.json
Normal file
15
Firefly/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Firefly - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://firefly.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
87
Firefly/docker-compose.yml
Normal file
87
Firefly/docker-compose.yml
Normal file
@@ -0,0 +1,87 @@
|
||||
services:
|
||||
mariadb:
|
||||
container_name: firefly_mariadb
|
||||
env_file:
|
||||
- .env
|
||||
image: mariadb
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik:
|
||||
ipv4_address: 172.27.1.55
|
||||
restart: always
|
||||
volumes:
|
||||
- db:/var/lib/mysql
|
||||
|
||||
server:
|
||||
container_name: firefly_server
|
||||
depends_on:
|
||||
- 'mariadb'
|
||||
env_file:
|
||||
- .env
|
||||
image: fireflyiii/core:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.firefly.entrypoints: websecure
|
||||
traefik.http.routers.firefly.rule: Host(`firefly.alexlebens.net`)
|
||||
traefik.http.routers.firefly.service: firefly
|
||||
traefik.http.services.firefly.loadbalancer.server.port: 8080
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik:
|
||||
ipv4_address: 172.27.1.56
|
||||
restart: always
|
||||
volumes:
|
||||
- upload:/var/www/html/storage/upload
|
||||
|
||||
plaid_connector:
|
||||
container_name: firefly_plaid
|
||||
depends_on:
|
||||
- 'server'
|
||||
image: registry.gitlab.com/georgehahn/firefly-plaid-connector:latest
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik:
|
||||
ipv4_address: 172.27.1.57
|
||||
restart: always
|
||||
volumes:
|
||||
- config:/config
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
db:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/firefly_db
|
||||
|
||||
upload:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/firefly_upload
|
||||
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/firefly_config
|
110
Gitea/.drone.yml
Normal file
110
Gitea/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Gitea
|
||||
URL: gitea.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Gitea failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Gitea failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Gitea succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Gitea failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
12
Gitea/.env
Normal file
12
Gitea/.env
Normal file
@@ -0,0 +1,12 @@
|
||||
POSTGRES_USER=gitea
|
||||
POSTGRES_PASSWORD=gitea
|
||||
POSTGRES_DB=gitea
|
||||
|
||||
USER_UID=1000
|
||||
USER_GID=1000
|
||||
GITEA__database__DB_TYPE=postgres
|
||||
GITEA__database__HOST=gitea_postgres:5432
|
||||
GITEA__database__NAME=gitea
|
||||
GITEA__database__USER=gitea
|
||||
GITEA__database__PASSWD=gitea
|
||||
GITEA__webhook__ALLOWED_HOST_LIST="*.alexlebens.net, 192.168.1.*, 172.27.*"
|
3
Gitea/README.md
Normal file
3
Gitea/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Gitea
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Gitea)
|
17
Gitea/UptimeKuma/docker-1.json
Normal file
17
Gitea/UptimeKuma/docker-1.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Gitea - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://gitea.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "gitea",
|
||||
"docker_host": 1
|
||||
}
|
17
Gitea/UptimeKuma/docker-2.json
Normal file
17
Gitea/UptimeKuma/docker-2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "docker",
|
||||
"name": "Gitea Postgres - Docker",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://gitea.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
],
|
||||
"docker_container": "gitea_postgres",
|
||||
"docker_host": 1
|
||||
}
|
15
Gitea/UptimeKuma/http-1.json
Normal file
15
Gitea/UptimeKuma/http-1.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "http",
|
||||
"name": "Gitea - Web",
|
||||
"interval": 60,
|
||||
"retryInterval": 20,
|
||||
"maxretries": 1,
|
||||
"notificationIDList": [
|
||||
3,
|
||||
4
|
||||
],
|
||||
"url": "https://gitea.alexlebens.net",
|
||||
"accepted_statuscodes": [
|
||||
"200-299"
|
||||
]
|
||||
}
|
65
Gitea/docker-compose.yml
Normal file
65
Gitea/docker-compose.yml
Normal file
@@ -0,0 +1,65 @@
|
||||
services:
|
||||
postgres:
|
||||
container_name: gitea_postgres
|
||||
env_file:
|
||||
- .env
|
||||
image: postgres:14
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
volumes:
|
||||
- postgressql:/var/lib/postgresql/data
|
||||
|
||||
gitea:
|
||||
container_name: gitea
|
||||
depends_on:
|
||||
- postgres
|
||||
env_file:
|
||||
- .env
|
||||
extra_hosts:
|
||||
- keycloak.alexlebens.net:192.168.1.15
|
||||
image: gitea/gitea:latest
|
||||
labels:
|
||||
traefik.docker.network: traefik
|
||||
traefik.enable: true
|
||||
traefik.http.routers.gitea.entrypoints: websecure
|
||||
traefik.http.routers.gitea.rule: Host(`gitea-old.alexlebens.net`)
|
||||
traefik.http.routers.gitea.service: gitea
|
||||
traefik.http.services.gitea.loadbalancer.server.port: 3000
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: 50m
|
||||
max-file: "3"
|
||||
networks:
|
||||
traefik: null
|
||||
restart: always
|
||||
volumes:
|
||||
- gitea_data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
name: traefik
|
||||
external: true
|
||||
|
||||
volumes:
|
||||
postgressql:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/gitea_postgressql
|
||||
|
||||
gitea_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /var/lib/docker/volumes/partition/gitea_data
|
110
Grafana/.drone.yml
Normal file
110
Grafana/.drone.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: deploy
|
||||
|
||||
environment:
|
||||
PACKAGE: Grafana
|
||||
URL: grafana.alexlebens.net
|
||||
|
||||
steps:
|
||||
- name: Tests
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- /scripts/tests.sh
|
||||
|
||||
- name: Nofification > Discord | Tests - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose validation for Grafana failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Configuration
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/configuration.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
UPTIMEKUMA_NAME:
|
||||
from_secret: uptimekuma_name
|
||||
UPTIMEKUMA_PASSWORD:
|
||||
from_secret: uptimekuma_password
|
||||
UPTIMEKUMA_URL:
|
||||
from_secret: uptimekuma_url
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Configuration - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Configuration for Grafana failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
|
||||
- name: Deploy
|
||||
image: ps03fd.alexlebens.net:5000/droneimage:latest
|
||||
commands:
|
||||
- mkdir ~/.ssh/
|
||||
- echo "$SSH_KEY" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H $HOST_IP >> ~/.ssh/known_hosts
|
||||
- /scripts/deploy.sh
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key_ps03fd_drone
|
||||
DOCKER_HOST:
|
||||
from_secret: docker_host_ps03fd
|
||||
HOST_IP:
|
||||
from_secret: host_ip_ps03fd
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
|
||||
- name: Nofification > Discord | Deploy - Success
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Grafana succeeded
|
||||
when:
|
||||
status:
|
||||
- sucess
|
||||
|
||||
- name: Nofification > Discord | Deploy - Failure
|
||||
image: appleboy/drone-discord
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_token
|
||||
username: DroneCI - ps03fd
|
||||
message: Docker compose deployment for Grafana failed.
|
||||
when:
|
||||
status:
|
||||
- failure
|
31
Grafana/.env
Normal file
31
Grafana/.env
Normal file
@@ -0,0 +1,31 @@
|
||||
PATH='/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
||||
|
||||
GF_PATHS_DATA='/var/lib/grafana'
|
||||
GF_PATHS_LOGS='/var/log/grafana'
|
||||
GF_PATHS_PLUGINS='/var/lib/grafana/plugins'
|
||||
GF_PATHS_PROVISIONING='/etc/grafana/provisioning'
|
||||
|
||||
GF_SERVER_ROOT_URL='alexlebens.net'
|
||||
GF_SERVER_ROOT_URL='https://grafana.alexlebens.net'
|
||||
|
||||
GF_USERS_AUTO_ASSIGN_ORG='true'
|
||||
GF_USERS_AUTO_ASSIGN_ORG_ID='1'
|
||||
|
||||
GF_AUTH_LOGIN_COOKIE_NAME='grafana_session'
|
||||
GF_AUTH_DISABLE_LOGIN_FORM='true'
|
||||
GF_AUTH_OAUTH_AUTO_LOGIN='false'
|
||||
GF_AUTH_OAUTH_ALLOW_INSECURE_EMAIL_LOOKUP='true'
|
||||
|
||||
GF_AUTH_GENERIC_OAUTH_ENABLED='true'
|
||||
GF_AUTH_GENERIC_OAUTH_NAME='Authentik'
|
||||
GF_AUTH_GENERIC_OAUTH_CLIENT_ID='7811f038dc09d084b36c253d92d4164d1b9a2096'
|
||||
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET='dbcef3c8baaf0fb038e2780ccbb2fc606d9a4f3ac5d55877b6d22d608ec995d300d5c269c51398063babdf226437caf87e345da87bc22f7cbc3d1d5c4f573b67'
|
||||
GF_AUTH_GENERIC_OAUTH_SCOPES='openid email profile'
|
||||
GF_AUTH_GENERIC_OAUTH_AUTH_URL='https://authentik.alexlebens.net/application/o/authorize/'
|
||||
GF_AUTH_GENERIC_OAUTH_TOKEN_URL='https://authentik.alexlebens.net/application/o/token/'
|
||||
GF_AUTH_GENERIC_OAUTH_API_URL='https://authentik.alexlebens.net/application/o/userinfo/'
|
||||
GF_AUTH_SIGNOUT_REDIRECT_URL='https://authentik.alexlebens.net/application/o/grafana/end-session/'
|
||||
GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH="contains(realm_access.roles[*], 'Grafana Admins') && 'Admin' || contains(realm_access.roles[*], 'Grafana Editors') && 'Editor' || 'Viewer'"
|
||||
|
||||
|
||||
GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS='grafana-clock-panel,grafana-worldmap-panel,grafana-simple-json-datasource,grafana-piechart-panel'
|
3
Grafana/README.md
Normal file
3
Grafana/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Grafana
|
||||
|
||||
[](https://drone.alexlebens.net/alexlebens/Grafana)
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user