mirror of
https://github.com/runyanjake/olomana.git
synced 2026-06-25 08:04:52 -07:00
Compare commits
8 Commits
2ff4ee2d61
...
48ec8437ca
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48ec8437ca | ||
|
|
56bda0bd4f | ||
|
|
7b910ff083 | ||
|
|
a3d1bf849f | ||
|
|
3eb1b3dd16 | ||
| 63d1d30622 | |||
| 892a376889 | |||
|
|
9f72e1c600 |
@ -2,6 +2,7 @@
|
||||
Docker containers relating to AI topics - LLMs, Generative AI, etc.
|
||||
|
||||
## Table of Contents
|
||||
- [Cline](cline/)
|
||||
- [Comfy UI](comfyui/)
|
||||
- [Open WebUI](openwebui/)
|
||||
|
||||
|
||||
@ -1,11 +1,14 @@
|
||||
# Software Development
|
||||
Utilities for developing, hosting, and managing software.
|
||||
|
||||
## Table of Contents
|
||||
- [Code Server](code-server/)
|
||||
- [Gitea](gitea/)
|
||||
- [Grafana](grafana/)
|
||||
- [Jenkins](jenkins/)
|
||||
- [Portainer](portainer/)
|
||||
- [Traefik](traefik/)
|
||||
## Design
|
||||
Design softwares for planning the look and feel of your application.
|
||||
|
||||
## Documentation
|
||||
Knowledge bases for storing your organization's data.
|
||||
|
||||
## Infrastructure
|
||||
Services that help you write and host code. CI/CD, observability, and general infrastructure tooling.
|
||||
|
||||
## Project Management
|
||||
Project management software (PMS) for keeping projects organized and on track.
|
||||
|
||||
13
software-development/design/README.md
Normal file
13
software-development/design/README.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Design
|
||||
|
||||
## Excalidraw
|
||||
A self hosted whiteboarding software.
|
||||
|
||||
Pros:
|
||||
- Simple to use, intuitive controls.
|
||||
|
||||
Cons:
|
||||
- Uses comic sans by default.
|
||||
|
||||
## Penpot
|
||||
Self hosted Figma.
|
||||
17
software-development/documentation/README.md
Normal file
17
software-development/documentation/README.md
Normal file
@ -0,0 +1,17 @@
|
||||
# Documentation
|
||||
|
||||
## VS Code Server
|
||||
A vs code server useable from the browser of any machine.
|
||||
|
||||
## Docmost
|
||||
A Jira-style knowledge base with good UI and good text controls.
|
||||
|
||||
## Flatnotes
|
||||
A simple note management software.
|
||||
|
||||
## Karakeep
|
||||
A simple note management software.
|
||||
|
||||
Cons:
|
||||
- Has a very large panel arrangement of your content.
|
||||
-
|
||||
@ -11,7 +11,7 @@ services:
|
||||
- db
|
||||
- redis
|
||||
environment:
|
||||
APP_URL: "https://documentation.whitney.rip"
|
||||
APP_URL: "https://docs.whitney.rip"
|
||||
APP_SECRET: "${APP_SECRET}"
|
||||
DATABASE_URL: "postgresql://docmost:${POSTGRES_PASSWORD}@db:5432/docmost"
|
||||
REDIS_URL: "redis://redis:6379"
|
||||
@ -23,7 +23,7 @@ services:
|
||||
- docmost
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.docmost.rule=Host(`documentation.whitney.rip`)"
|
||||
- "traefik.http.routers.docmost.rule=Host(`docs.whitney.rip`)"
|
||||
- "traefik.http.routers.docmost.entrypoints=websecure"
|
||||
- "traefik.http.routers.docmost.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.docmost.loadbalancer.server.port=3000"
|
||||
|
||||
19
software-development/infrastructure/README.md
Normal file
19
software-development/infrastructure/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Infrastructure
|
||||
|
||||
## Gitea
|
||||
A self hosted Github alternative.
|
||||
|
||||
## Grafana
|
||||
Data visualizer for your time series.
|
||||
|
||||
## Jenkins
|
||||
Playbook orchestration tool.
|
||||
|
||||
## Mailserver
|
||||
A custom mail server.
|
||||
|
||||
## Portainer
|
||||
A docker container visualization tool.
|
||||
|
||||
## Traefik
|
||||
A reverse proxy that routes docker container traffic really well.
|
||||
48
software-development/project-management/README.md
Normal file
48
software-development/project-management/README.md
Normal file
@ -0,0 +1,48 @@
|
||||
# Project Management
|
||||
|
||||
Tools for tracking the progress of projects and their tasks.
|
||||
|
||||
## Leantime
|
||||
This is built for creatives and has a lot of visual polish and (in my opinion) a very cluttered view.
|
||||
|
||||
Pros
|
||||
- Design is pleasant to look at, feels somewhat modern.
|
||||
|
||||
Cons
|
||||
- This is focused more towards personal time management rather than project management. Cannot hide certain modules per project. All features really rely around tracking time, less suited for one off grab-bag task items.
|
||||
|
||||
## Openproject
|
||||
Fully featured project managment software, with a plain design.
|
||||
|
||||
Pros
|
||||
- Many customization options, such as removing modules from projects for features you don't use. Quite a lot of features in general.
|
||||
|
||||
Cons
|
||||
- UI looks old, not a great fit for mobile browsing.
|
||||
|
||||
## Plane
|
||||
Modern design, nearly best in class. Has sprints (
|
||||
|
||||
Pros
|
||||
- Best polish for UI of the options I've tried.
|
||||
|
||||
Cons
|
||||
- Mobile usage gated behind $6/seat paywall.
|
||||
|
||||
## Planka
|
||||
A solid self hosted Kanban board.
|
||||
|
||||
Pros
|
||||
- Visually nice, works good on mobile/desktop/tablet.
|
||||
|
||||
Cons
|
||||
- No sprint planning.
|
||||
|
||||
## Taiga
|
||||
A decent looking PMS software.
|
||||
|
||||
Pros
|
||||
- Allows for sprint planning, though it's not intuitive (to me).
|
||||
|
||||
Cons
|
||||
- You cannot get rid of some of the "completion status" visuals.
|
||||
@ -0,0 +1,30 @@
|
||||
# Public hostname (no scheme)
|
||||
DOMAIN=leantime.example.com
|
||||
|
||||
# Full base URL (include scheme) — used by Leantime for cookies and links
|
||||
LEAN_APP_URL=https://leantime.example.com
|
||||
|
||||
# Pin a version, or leave unset for :latest
|
||||
LEAN_VERSION=latest
|
||||
|
||||
# Session salt — generate with `openssl rand -base64 32`
|
||||
LEAN_SESSION_PASSWORD=
|
||||
LEAN_SESSION_SECURE=true
|
||||
|
||||
# Timezone
|
||||
LEAN_DEFAULT_TIMEZONE=America/Los_Angeles
|
||||
|
||||
# Database
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
LEAN_DB_DATABASE=leantime
|
||||
LEAN_DB_USER=leantime
|
||||
LEAN_DB_PASSWORD=
|
||||
|
||||
# Email (optional; leave LEAN_EMAIL_USE_SMTP=false to use php mail())
|
||||
LEAN_EMAIL_RETURN=
|
||||
LEAN_EMAIL_USE_SMTP=false
|
||||
LEAN_EMAIL_SMTP_HOSTS=
|
||||
LEAN_EMAIL_SMTP_USERNAME=
|
||||
LEAN_EMAIL_SMTP_PASSWORD=
|
||||
LEAN_EMAIL_SMTP_SECURE=
|
||||
LEAN_EMAIL_SMTP_PORT=
|
||||
1
software-development/project-management/leantime/.gitignore
vendored
Normal file
1
software-development/project-management/leantime/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.env
|
||||
21
software-development/project-management/leantime/README.md
Normal file
21
software-development/project-management/leantime/README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Leantime
|
||||
Open source goals-focused project management system.
|
||||
|
||||
## Setup
|
||||
1. Copy `.env.example` to `.env` and fill out all values. Use `openssl rand -base64 32` for `LEAN_SESSION_PASSWORD` and DB passwords.
|
||||
2. Start the stack: `docker compose up -d`
|
||||
3. Open `https://${DOMAIN}/install` once to run the first-time installer; it will create the schema and the initial admin user.
|
||||
|
||||
## Runbook
|
||||
|
||||
Single Command
|
||||
```bash
|
||||
docker compose down && docker system prune && docker compose up -d && docker logs -f leantime
|
||||
```
|
||||
|
||||
**Fix data folder permissions (run on first boot / when adding a new host volume)**
|
||||
The PHP container runs as `www-data` (UID/GID 1000) and needs to own everything except `db/` (MySQL manages its own).
|
||||
```
|
||||
sudo chown -R 1000:1000 /pwspool/software/leantime/{public_userfiles,userfiles,plugins,logs}
|
||||
```
|
||||
|
||||
@ -0,0 +1,77 @@
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
leantime:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
|
||||
# ── Database ────────────────────────────────────────────────────────────────
|
||||
|
||||
leantime-db:
|
||||
image: mysql:8.4
|
||||
container_name: leantime-db
|
||||
restart: always
|
||||
networks:
|
||||
- leantime
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${LEAN_DB_DATABASE}
|
||||
MYSQL_USER: ${LEAN_DB_USER}
|
||||
MYSQL_PASSWORD: ${LEAN_DB_PASSWORD}
|
||||
command: --character-set-server=UTF8MB4 --collation-server=UTF8MB4_unicode_ci
|
||||
volumes:
|
||||
- /pwspool/software/leantime/db:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
# ── Application ─────────────────────────────────────────────────────────────
|
||||
|
||||
leantime:
|
||||
image: leantime/leantime:${LEAN_VERSION:-latest}
|
||||
container_name: leantime
|
||||
restart: always
|
||||
networks:
|
||||
- leantime
|
||||
- traefik
|
||||
depends_on:
|
||||
leantime-db:
|
||||
condition: service_healthy
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
cap_add:
|
||||
- CAP_CHOWN
|
||||
- CAP_SETGID
|
||||
- CAP_SETUID
|
||||
environment:
|
||||
LEAN_APP_URL: ${LEAN_APP_URL}
|
||||
LEAN_SESSION_PASSWORD: ${LEAN_SESSION_PASSWORD}
|
||||
LEAN_SESSION_SECURE: ${LEAN_SESSION_SECURE:-true}
|
||||
LEAN_DB_HOST: leantime-db
|
||||
LEAN_DB_PORT: 3306
|
||||
LEAN_DB_DATABASE: ${LEAN_DB_DATABASE}
|
||||
LEAN_DB_USER: ${LEAN_DB_USER}
|
||||
LEAN_DB_PASSWORD: ${LEAN_DB_PASSWORD}
|
||||
LEAN_DEFAULT_TIMEZONE: ${LEAN_DEFAULT_TIMEZONE:-America/Los_Angeles}
|
||||
LEAN_EMAIL_RETURN: ${LEAN_EMAIL_RETURN}
|
||||
LEAN_EMAIL_USE_SMTP: ${LEAN_EMAIL_USE_SMTP:-false}
|
||||
LEAN_EMAIL_SMTP_HOSTS: ${LEAN_EMAIL_SMTP_HOSTS}
|
||||
LEAN_EMAIL_SMTP_USERNAME: ${LEAN_EMAIL_SMTP_USERNAME}
|
||||
LEAN_EMAIL_SMTP_PASSWORD: ${LEAN_EMAIL_SMTP_PASSWORD}
|
||||
LEAN_EMAIL_SMTP_SECURE: ${LEAN_EMAIL_SMTP_SECURE}
|
||||
LEAN_EMAIL_SMTP_PORT: ${LEAN_EMAIL_SMTP_PORT}
|
||||
volumes:
|
||||
- /pwspool/software/leantime/public_userfiles:/var/www/html/public/userfiles
|
||||
- /pwspool/software/leantime/userfiles:/var/www/html/userfiles
|
||||
- /pwspool/software/leantime/plugins:/var/www/html/app/Plugins
|
||||
- /pwspool/software/leantime/logs:/var/www/html/storage/logs
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=traefik
|
||||
- traefik.http.routers.leantime.rule=Host(`${DOMAIN}`)
|
||||
- traefik.http.routers.leantime.tls=true
|
||||
- traefik.http.routers.leantime.tls.certresolver=lets-encrypt
|
||||
- traefik.http.services.leantime.loadbalancer.server.port=8080
|
||||
@ -4,5 +4,25 @@ Open source project management software.
|
||||
# Setup
|
||||
1. Configure `.env`, see example.
|
||||
- Note to specify `OPENPROJECT_HOST__NAME` without protocol.
|
||||
2. Configure users.
|
||||
- Default admin user is `admin:admin`.
|
||||
2. Bring the stack up: `docker compose up -d`.
|
||||
3. First-time login: `admin` / `admin`. You'll be forced to set a new password on first sign-in.
|
||||
- To pre-seed the admin password and skip the forced reset, set before first boot:
|
||||
- `OPENPROJECT_SEED_ADMIN_USER_PASSWORD=<strong password>`
|
||||
- `OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET=false`
|
||||
|
||||
# Toggling self-signup
|
||||
Controlled by `OPENPROJECT_SELF__REGISTRATION` (double underscore is intentional):
|
||||
- `0` — disabled
|
||||
- `1` — email activation
|
||||
- `2` — manual admin activation
|
||||
- `3` — automatic activation
|
||||
|
||||
The env value seeds the setting; an admin can still change it via Administration → Authentication → Settings.
|
||||
|
||||
# Wiping persistent data
|
||||
The all-in-one image bundles Postgres inside the container. The bind mount at `/pwspool/software/openproject` holds both `pgdata/` (database) and `assets/` (uploaded files). To start fresh:
|
||||
```
|
||||
docker compose down
|
||||
sudo rm -rf /pwspool/software/openproject/pgdata /pwspool/software/openproject/assets
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
@ -12,9 +12,9 @@ services:
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- /pwspool/software/openproject/data:/var/openproject/assets
|
||||
- /pwspool/software/openproject:/var/openproject
|
||||
labels:
|
||||
- traefik.http.routers.openproject.rule=Host(`pm.whitney.rip`)
|
||||
- traefik.http.routers.openproject.rule=Host(`openproject.whitney.rip`)
|
||||
- traefik.http.routers.openproject.tls=true
|
||||
- traefik.http.routers.openproject.tls.certresolver=lets-encrypt
|
||||
- traefik.http.services.openproject.loadbalancer.server.port=8080
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user