Compare commits
16 commits
Author | SHA1 | Date | |
---|---|---|---|
2fbc84ac90 | |||
6870a2e062 | |||
bd9d40ce23 | |||
36c7d1be84 | |||
57aee9a01f | |||
f92ba38768 | |||
471842bffc | |||
5b896beec8 | |||
1bc9385c50 | |||
a4099b9b1a | |||
dc47ddbb16 | |||
c14119aaae | |||
51bed68351 | |||
9c14094619 | |||
73abcb64eb | |||
120c8c13ad |
6 changed files with 171 additions and 16 deletions
|
@ -2,6 +2,7 @@
|
|||
services:
|
||||
postgres:
|
||||
image: postgres:${NETBOX_POSTGRESQL_VERISION:-16}
|
||||
container_name: netbox-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:?error}
|
||||
|
@ -22,6 +23,7 @@ services:
|
|||
|
||||
netbox:
|
||||
image: netboxcommunity/netbox:${NETBOX_VERSION:-v4.2.6}
|
||||
container_name: netbox
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- postgres
|
||||
|
|
28
solidtime/README.md
Normal file
28
solidtime/README.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
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.
|
|
@ -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:?error}`)"
|
||||
- "traefik.http.routers.solidtime.rule=Host(`${SOLIDTIME_DOMAIN}`)"
|
||||
- "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:?error}`)"
|
||||
- "traefik.http.routers.solidtime-secure.rule=Host(`${SOLIDTIME_DOMAIN}`)"
|
||||
- "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:
|
||||
- traefik
|
||||
- internal
|
||||
- solidtime
|
||||
volumes:
|
||||
- "app-storage:/var/www/html/storage"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
- "logs:/var/www/html/storage/logs"
|
||||
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"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
- "logs:/var/www/html/storage/logs"
|
||||
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"
|
||||
- "./data/logs:/var/www/html/storage/logs"
|
||||
- "./data/app-storage:/var/www/html/storage/app"
|
||||
- "logs:/var/www/html/storage/logs"
|
||||
environment:
|
||||
CONTAINER_MODE: worker
|
||||
WORKER_COMMAND: "php /var/www/html/artisan queue:work"
|
||||
|
@ -71,8 +71,9 @@ services:
|
|||
database:
|
||||
restart: always
|
||||
image: 'postgres:${SOLIDTIME_POSTGRES_VERSION:-16}'
|
||||
container_name: solidtime-db
|
||||
environment:
|
||||
PGPASSWORD: '${SOLIDTIME_POSGRES_PASSWORD:?error}'
|
||||
PGPASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}'
|
||||
POSTGRES_DB: '${SOLIDTIME_POSTGRES_DATABASE:?error}'
|
||||
POSTGRES_USER: '${SOLIDTIME_POSTGRES_USERNAME:?error}'
|
||||
POSTGRES_PASSWORD: '${SOLIDTIME_POSTGRES_PASSWORD:?error}'
|
||||
|
@ -94,16 +95,19 @@ services:
|
|||
|
||||
gotenberg:
|
||||
image: gotenberg/gotenberg:8
|
||||
container_name: solidtime-gotenberg
|
||||
networks:
|
||||
- solidtime
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "--silent", "--fail", "http://localhost:3000/health" ]
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
internal:
|
||||
external: true
|
||||
solidtime:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
database-storage:
|
||||
app-storage:
|
||||
app-storage:
|
||||
logs:
|
|
@ -29,7 +29,7 @@ providers:
|
|||
exposedByDefault: false
|
||||
watch: true
|
||||
file:
|
||||
directory: "/config.d/"
|
||||
directory: "/etc/traefik/config.d/"
|
||||
watch: true
|
||||
|
||||
certificatesResolvers:
|
||||
|
|
83
wishlist/.env-example
Normal file
83
wishlist/.env-example
Normal file
|
@ -0,0 +1,83 @@
|
|||
## 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
|
38
wishlist/docker-compose.yml
Normal file
38
wishlist/docker-compose.yml
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
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
|
Loading…
Add table
Reference in a new issue