Compare commits

..

1 commit

Author SHA1 Message Date
a1db8fc197 Add ASCIICinema container 2025-03-30 07:52:43 +00:00
9 changed files with 88 additions and 171 deletions

12
asciicinema/.env-example Normal file
View file

@ -0,0 +1,12 @@
# Asciinema
ASCIICINEMA_VERSION=latest
ASCIICINEMA_SECRET= # tr -dc A-Za-z0-9 </dev/urandom | head -c 64; echo
ASCIICINEMA_DOMAIN=asciicinema.example.com
# SMTP
ASCIICINEMA_SMTP_HOST=localhost
ASCIICINEMA_SMTP_USER=none
ASCIICINEMA_SMTP_PASSWORD=none
# PostgreSQL
ASCIICINEMA_POSTGRESQL_VERSION=16

3
asciicinema/README.md Normal file
View file

@ -0,0 +1,3 @@
After installastion you must install the asciicinema-client and point it to your location:
export ASCIINEMA_API_URL=https://asciinema.example.com

View file

@ -0,0 +1,57 @@
---
services:
asciinema:
image: ghcr.io/asciinema/asciinema-server:${ASCIICINEMA_VERSION:-latest}
container_name: asciicinema
networks:
- traefik
- asciicinema
environment:
- SECRET_KEY_BASE=${ASCIICINEMA_SECRET:?error}
- URL_HOST=${ASCIICINEMA_DOMAIN:?error}
- URL_SCHEME=https
- SMTP_HOST=${ASCIICINEMA_SMTP_HOST:-localhost}
- SMTP_USERNAME=${ASCIICINEMA_SMTP_USER:-none}
- SMTP_PASSWORD=${ASCIICINEMA_SMTP_PASSWORD:-none}
volumes:
- data:/var/opt/asciinema
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.aciicinema.entrypoints=http"
- "traefik.http.routers.aciicinema.rule=Host(`${ASCIICINEMA_DOMAIN:?error}`)"
- "traefik.http.middlewares.aciicinema-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.aciicinema.middlewares=aciicinema-https-redirect"
- "traefik.http.routers.aciicinema-secure.entrypoints=https"
- "traefik.http.routers.aciicinema-secure.rule=Host(`${ASCIICINEMA_DOMAIN:?error}`)"
- "traefik.http.routers.aciicinema-secure.tls=true"
- "traefik.http.routers.aciicinema-secure.service=aciicinema"
- "traefik.http.services.aciicinema.loadbalancer.server.port=4000"
depends_on:
postgres:
condition: service_healthy
postgres:
image: docker.io/library/postgres:${ASCIICINEMA_POSTGRESQL_VERSION:-16}
container_name: asciicinema-db
networks:
- asciicinema
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- db:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 2s
timeout: 5s
retries: 10
networks:
traefik:
external: true
asciicinema:
driver: bridge
volumes:
data:
db:

View file

@ -2,7 +2,6 @@
services:
postgres:
image: postgres:${NETBOX_POSTGRESQL_VERISION:-16}
container_name: netbox-db
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:?error}
@ -23,7 +22,6 @@ services:
netbox:
image: netboxcommunity/netbox:${NETBOX_VERSION:-v4.2.6}
container_name: netbox
restart: unless-stopped
depends_on:
- postgres

View file

@ -1,28 +0,0 @@
1. Generate the application keys after solditime starts
You need to generate the application keys for your solidtime installation. You can do this by running the following command:
´´´
docker compose run scheduler php artisan self-host:generate-keys
´´´
This command will output random values for the APP_KEY, PASSPORT_PRIVATE_KEY, and PASSPORT_PUBLIC_KEY environment variables. You can copy these values and add them to the laravel.env file.
2. Create a user
Depending on your configuration of the APP_ENABLE_REGISTRATION environment variable, you can either create a user via the registration form or you need to create a user via the CLI. Per default the registration is disabled.
You can create a user via the CLI with the following command:
´´´
docker compose exec scheduler php artisan admin:user:create "Firstname Lastname" "firstname.lastname@some-email-provider.test" --verify-email
´´´
More information about the CLI commands can be found in the CLI commands documentation.
If you want this first user to be a super admin, you can add the email address to the SUPER_ADMINS environment variable in the laravel.env file.
´´´
SUPER_ADMINS="firstname.lastname@some-email-provider.test"
´´´
The command output a random password for the user. Afterwards you need to restart the containers:
´´´
docker compose down && docker compose up -d
´´´
Then you should be able log in with the user you created. If the user is a super admin, you can access the super admin panel via /admin.

View file

@ -5,41 +5,41 @@ services:
restart: always
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.solidtime.entrypoints=http"
- "traefik.http.routers.solidtime.rule=Host(`${SOLIDTIME_DOMAIN}`)"
- "traefik.http.routers.solidtime.rule=Host(`${SOLIDTIME_DOMAIN:?error}`)"
- "traefik.http.middlewares.solidtime-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.solidtime.middlewares=solidtime-https-redirect"
- "traefik.http.routers.solidtime-secure.entrypoints=https"
- "traefik.http.routers.solidtime-secure.rule=Host(`${SOLIDTIME_DOMAIN}`)"
- "traefik.http.routers.solidtime-secure.rule=Host(`${SOLIDTIME_DOMAIN:?error}`)"
- "traefik.http.routers.solidtime-secure.tls=true"
- "traefik.http.routers.solidtime-secure.service=solidtime"
- "traefik.http.services.solidtime.loadbalancer.server.port=8000"
- "traefik.docker.network=internal"
networks:
- internal
- traefik
- solidtime
volumes:
- "app-storage:/var/www/html/storage"
- "logs:/var/www/html/storage/logs"
- "./data/logs:/var/www/html/storage/logs"
- "./data/app-storage:/var/www/html/storage/app"
environment:
CONTAINER_MODE: http
AUTO_DB_MIGRATE: true
healthcheck:
test: [ "CMD-SHELL", "curl --fail http://localhost:8000/health-check/up || exit 1" ]
env_file:
- laravel.env
- .env
depends_on:
- database
scheduler:
image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}"
container_name: solidtime-scheduler
restart: always
networks:
- solidtime
volumes:
- "app-storage:/var/www/html/storage"
- "logs:/var/www/html/storage/logs"
- "./data/logs:/var/www/html/storage/logs"
- "./data/app-storage:/var/www/html/storage/app"
environment:
CONTAINER_MODE: scheduler
healthcheck:
@ -52,12 +52,12 @@ services:
queue:
restart: always
image: "solidtime/solidtime:${SOLIDTIME_VERSION:-latest}"
container_name: solidtime-queue
networks:
- solidtime
volumes:
- "app-storage:/var/www/html/storage"
- "logs:/var/www/html/storage/logs"
- "./data/logs:/var/www/html/storage/logs"
- "./data/app-storage:/var/www/html/storage/app"
environment:
CONTAINER_MODE: worker
WORKER_COMMAND: "php /var/www/html/artisan queue:work"
@ -71,9 +71,8 @@ services:
database:
restart: always
image: 'postgres:${SOLIDTIME_POSTGRES_VERSION:-16}'
container_name: solidtime-db
environment:
PGPASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}'
PGPASSWORD: '${SOLIDTIME_POSGRES_PASSWORD:?error}'
POSTGRES_DB: '${SOLIDTIME_POSTGRES_DATABASE:?error}'
POSTGRES_USER: '${SOLIDTIME_POSTGRES_USERNAME:?error}'
POSTGRES_PASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}'
@ -95,19 +94,16 @@ services:
gotenberg:
image: gotenberg/gotenberg:8
container_name: solidtime-gotenberg
networks:
- solidtime
healthcheck:
test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ]
networks:
internal:
traefik:
external: true
solidtime:
driver: bridge
internal:
volumes:
database-storage:
app-storage:
logs:
app-storage:

View file

@ -29,7 +29,7 @@ providers:
exposedByDefault: false
watch: true
file:
directory: "/etc/traefik/config.d/"
directory: "/config.d/"
watch: true
certificatesResolvers:

View file

@ -1,83 +0,0 @@
## Traefik and Docker Options
WISHLIST_URL=wishlist.example.com
WISHLIST_VERSION=latest
## Core Settings
# Where to store databases, can be a CouchDB compatible server or directory.
DB_PREFIX=dbs/
# Location of DB log file (if needed for debugging).
DB_LOG_FILE=/dev/null
# Where to send someone if they need to log in
DEFAULT_FAILURE_REDIRECT=/login
# Port to listen on
PORT=80
# Expose the internal PouchDB with CouchDB API and Fauxton browser. Mostly used for debugging. Leave empty to disable.
DB_EXPOSE_PORT=
# Proxy to send item data requests to. Leave empty to disable.
PROXY_SERVER=
# Secret string to store session cookies with. Automatically generated if not provided.
SECRET=
# How long a user is logged in (milliseconds). Defaults to one week.
SESSION_MAX_AGE=604800000
# The name of the site in the <title> and navigation bar
SITE_TITLE=Christmas Community
# Used when shared to home screen
SHORT_TITLE=Christmas
# The root URL for forms, CSS, and a small amount of JS. Useful when proxying or using SSO.
# If not using SSO, this can be a relative path.
ROOT_URL=/
# Where to trust the X-Forwarded-For header from. Defaults to "loopback". Useful for proxying to docker.
TRUST_PROXY=loopback
# Any theme from https://jenil.github.io/bulmaswatch
BULMASWATCH=default
# Set to false to disable update notices
UPDATE_CHECK=true
# Set to false to disable the profile pictures feature
PFP=true
# Language of the interface, options listed in `languages` directory
LANGUAGE=en-US
# Password to enter guest mode,
# e.g. https://wishes.example.com?pw=ReplaceWithYourGuestPassword
# GUEST_PASSWORD=ReplaceWithYourGuestPassword
## Wishlist Settings
# Set to true to not allow users to have their own lists. You may want this for a birthday or wedding.
SINGLE_LIST=false
# Set to false to allow viewing wishlists without logging in
LISTS_PUBLIC=false
# Defaults to true. Set to false for legacy cards view.
TABLE=true
# Allow Markdown in item notes. Does not work with TABLE=false. Defaults to false.
MARKDOWN=false
## Custom HTML Snippets
# These are inserted into specific locations in the relevant page
# HTML is not escaped. Don't put untrusted data here.
# CUSTOM_HTML_LOGIN=<p style="margin-top: 1em;">Some custom text for the Login page</p>
# CUSTOM_HTML_WISHLISTS=
# Custom CSS stylesheet
# If you wish to include a custom stylesheet you can add the filename in the variable here.
# Remember to add the stylesheet to the filesystem at `static/css/custom.css`. In docker, mount `/usr/src/app/src/static/css/custom.css`.
# CUSTOM_CSS=custom.css
## Google Client Details
# You can configure single sign-on to your Christmas Community instance using Google accounts. Read this guide for details of what to configure on the Google side: https://developers.google.com/identity/openid-connect/openid-connect
# Once you've created a client ID and secret in your Google project use the below environment variables to enable SSO
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
## OIDC Provider Details
# You can configure single sign-on to your Christmas Community instance using any OIDC provider.
# Once you've created a client ID and secret in your authentication provider use the below environment variables to enable single sign on.
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_AUTHORIZATION_URL=https://accounts.google.com/o/oauth2/auth
# OIDC_TOKEN_URL=https://oauth2.googleapis.com/token
# OIDC_ISSUER=https://accounts.google.com
# OIDC_PROVIDER_NAME=Google
# Profile picture upload max size in MB
UPLOAD_PFP_MAX_SIZE=5

View file

@ -1,38 +0,0 @@
---
services:
christmas-community:
image: wingysam/christmas-community:latest
container_name: wishlist
restart: always
volumes:
- ./data:/data
networks:
- traefik
environment:
SMILE: 'true'
# Table mode, set to 'false' to revert to box mode
TABLE: 'true'
# Single list mode
# (for weddings, birthdays, etc. only the admin account's list is accessible)
# Set to 'true' to enable
SINGLE_LIST: 'false'
# Some websites (like walmart) send headers that are larger than 8MB in
# length. If issues are encountered, set the node.js limit to a higher
# number than 8192
#NODE_OPTIONS: "--max-http-header-size=32768"
labels:
- "traefik.enable=true"
- "traefik.http.routers.wishlist.entrypoints=http"
- "traefik.http.routers.wishlist.rule=Host(`${WISHLIST_URL}`)"
- "traefik.http.middlewares.wishlist-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.wishlist.middlewares=wishlist-https-redirect"
- "traefik.http.routers.wishlist-secure.entrypoints=https"
- "traefik.http.routers.wishlist-secure.rule=Host(`${WISHLIST_URL}`)"
- "traefik.http.routers.wishlist-secure.tls=true"
- "traefik.http.routers.wishlist-secure.service=wishlist"
- "traefik.http.services.wishlist.loadbalancer.server.port=80"
- "traefik.docker.network=traefik"
networks:
traefik:
external: true