Compare commits
10 Commits
746ebe0a59
...
11ec28dfcd
| Author | SHA1 | Date | |
|---|---|---|---|
| 11ec28dfcd | |||
| adc590f346 | |||
| eea96b9f02 | |||
| 5b0e798d37 | |||
| ac8364a11a | |||
| caf2af8c60 | |||
| 3065a31d08 | |||
| e95a2d9bbc | |||
| 3e72b8d544 | |||
| a14978c410 |
15
.gitignore
vendored
Normal file
15
.gitignore
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
.secrets
|
||||||
|
.env
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
webapp/nginx-test
|
||||||
|
webapp/dad-domains
|
||||||
|
webapp/qbittorrent
|
||||||
|
webapp/openwebui
|
||||||
|
webapp/wisemapping
|
||||||
|
remote/rustdesk-server
|
||||||
|
remote/ttyd-ubuntu
|
||||||
|
mgmt/grafana
|
||||||
|
mgmt/prometheus
|
||||||
|
local/Y2JB-WebUI
|
||||||
21
AGENTS.md
21
AGENTS.md
@@ -1,5 +1,23 @@
|
|||||||
# Agent Guidelines for Docker Infrastructure Monorepo
|
# Agent Guidelines for Docker Infrastructure Monorepo
|
||||||
|
|
||||||
|
## CRITICAL: Forbidden Files
|
||||||
|
|
||||||
|
**NEVER read, access, or attempt to open the following files under ANY circumstances:**
|
||||||
|
|
||||||
|
- `.env` and ALL variants (`.env.local`, `.env.development`, `.env.production`, `.env.*`)
|
||||||
|
- `.secrets/` directories at any level
|
||||||
|
- Any file in a `secrets/` directory at any level
|
||||||
|
- Credential files: `credentials.json`, `credentials.yml`, `credentials.yaml`
|
||||||
|
- Key files: `*.pem`, `*.key`, `*.p12`, `*.pfx`, `id_rsa`, `id_ecdsa`, `id_ed25519`
|
||||||
|
- Files named `token`, `tokens`, `.token`, `.tokens`, `password`, `passwords`
|
||||||
|
|
||||||
|
**What to do instead:**
|
||||||
|
- Use `.env.example` files to understand required environment variables
|
||||||
|
- Ask the user to provide values explicitly if needed
|
||||||
|
- Use placeholder values when demonstrating code
|
||||||
|
|
||||||
|
This is a hard rule. No exceptions. No "just checking". If you need env info, read the `.env.example` file or ask the user.
|
||||||
|
|
||||||
## Repository Structure
|
## Repository Structure
|
||||||
|
|
||||||
This is a Docker Compose monorepo for personal infrastructure hosting. The main focus is Docker services, with local tools in `local/`.
|
This is a Docker Compose monorepo for personal infrastructure hosting. The main focus is Docker services, with local tools in `local/`.
|
||||||
@@ -115,8 +133,7 @@ For full OpenClaw guidelines, see `local/openclaw/AGENTS.md`.
|
|||||||
|
|
||||||
## Security Best Practices
|
## Security Best Practices
|
||||||
|
|
||||||
- **NEVER read, access, or attempt to open `.env` files or `.secrets/` directories** - These contain sensitive data
|
- See **CRITICAL: Forbidden Files** section above — this is the highest priority rule in this repo
|
||||||
- `.env` and `.secrets/` directories are gitignored everywhere
|
|
||||||
- Never commit credentials, API keys, or certificates
|
- Never commit credentials, API keys, or certificates
|
||||||
- Use Cloudflare Tunnel for external access (no port forwarding)
|
- Use Cloudflare Tunnel for external access (no port forwarding)
|
||||||
- Placeholders in documentation (e.g., `user@example.com`)
|
- Placeholders in documentation (e.g., `user@example.com`)
|
||||||
|
|||||||
3
backend/postgres/.gitignore
vendored
Normal file
3
backend/postgres/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.env
|
||||||
|
.secrets/
|
||||||
|
init-data.sh
|
||||||
@@ -9,7 +9,7 @@ services:
|
|||||||
start_period: 20s
|
start_period: 20s
|
||||||
test:
|
test:
|
||||||
- CMD-SHELL
|
- CMD-SHELL
|
||||||
- pg_isready -U $${POSTGRES_USER_FILE}
|
- pg_isready -U "$$(cat /run/secrets/POSTGRES_USER)"
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
@@ -19,16 +19,16 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- pgdata:/var/lib/postgresql
|
- pgdata:/var/lib/postgresql
|
||||||
networks:
|
networks:
|
||||||
- db
|
- backend
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
name: pgdata
|
name: pgdata
|
||||||
secrets:
|
secrets:
|
||||||
POSTGRES_USER:
|
POSTGRES_USER:
|
||||||
file: ./.secrets/POSTGRES_USER
|
file: .secrets/POSTGRES_USER
|
||||||
POSTGRES_PASS:
|
POSTGRES_PASS:
|
||||||
file: ./.secrets/POSTGRES_PASS
|
file: .secrets/POSTGRES_PASS
|
||||||
networks:
|
networks:
|
||||||
db:
|
backend:
|
||||||
external:
|
external:
|
||||||
true
|
true
|
||||||
4
backend/surrealdb/.env.example
Normal file
4
backend/surrealdb/.env.example
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# SurrealDB Configuration
|
||||||
|
# Root password is loaded from ./.secrets/SURREAL_ROOT_PASSWORD via Docker secrets
|
||||||
|
# Timezone settings
|
||||||
|
TZ=
|
||||||
28
backend/surrealdb/compose.yml
Normal file
28
backend/surrealdb/compose.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
surrealdb:
|
||||||
|
image: surrealdb/surrealdb:v2
|
||||||
|
container_name: surrealdb
|
||||||
|
# entrypoint: ["/bin/sh"]
|
||||||
|
command: start --user root --pass $(cat /run/secrets/SURREAL_ROOT_PASSWORD) rocksdb:/mydata/mydatabase.db
|
||||||
|
user: root
|
||||||
|
restart: always
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
secrets:
|
||||||
|
- SURREAL_ROOT_PASSWORD
|
||||||
|
volumes:
|
||||||
|
- surreal_data:/mydata
|
||||||
|
networks:
|
||||||
|
- db
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
surreal_data:
|
||||||
|
name: surreal_data
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
SURREAL_ROOT_PASSWORD:
|
||||||
|
file: ./.secrets/SURREAL_ROOT_PASSWORD
|
||||||
|
|
||||||
|
networks:
|
||||||
|
db:
|
||||||
|
external: true
|
||||||
@@ -8,6 +8,8 @@ services:
|
|||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
expose:
|
||||||
|
- "7844"
|
||||||
networks:
|
networks:
|
||||||
- frontend
|
- frontend
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- traefik.enable=true
|
- traefik.enable=true
|
||||||
- traefik.http.routers.portainer.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
|
- traefik.http.routers.portainer.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
|
||||||
- traefik.docker.network=webapp
|
- traefik.docker.network=mgmt
|
||||||
- traefik.http.services.portainer.loadbalancer.server.port=9000
|
- traefik.http.services.portainer.loadbalancer.server.port=9000
|
||||||
- traefik.http.routers.portainer.tls=true
|
- traefik.http.routers.portainer.tls=true
|
||||||
- traefik.http.routers.portainer.entrypoints=web,websecure
|
- traefik.http.routers.portainer.entrypoints=web,websecure
|
||||||
@@ -25,6 +25,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- ./data:/data
|
- ./data:/data
|
||||||
|
expose:
|
||||||
|
- 9000
|
||||||
networks:
|
networks:
|
||||||
- mgmt
|
- mgmt
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
2
myprojects/kimi/.env.example
Normal file
2
myprojects/kimi/.env.example
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# No env vars required for basic kimi CLI usage
|
||||||
|
# Add API keys or config here as needed
|
||||||
18
myprojects/kimi/Dockerfile
Normal file
18
myprojects/kimi/Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
FROM alpine:3.23
|
||||||
|
|
||||||
|
RUN apk add --no-cache bash curl
|
||||||
|
|
||||||
|
RUN addgroup -g 1000 kimi && \
|
||||||
|
adduser -D -u 1000 -G kimi kimi
|
||||||
|
|
||||||
|
USER kimi
|
||||||
|
WORKDIR /home/kimi
|
||||||
|
|
||||||
|
RUN curl -fsSL https://astral.sh/uv/install.sh | sh
|
||||||
|
RUN /home/kimi/.local/bin/uv tool install --python 3.13 kimi-cli
|
||||||
|
|
||||||
|
ENV PATH="/home/kimi/.local/bin:${PATH}"
|
||||||
|
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
ENTRYPOINT ["kimi"]
|
||||||
12
myprojects/kimi/compose.yml
Normal file
12
myprojects/kimi/compose.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
services:
|
||||||
|
kimi:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
network: host
|
||||||
|
image: kimi:alpine
|
||||||
|
container_name: kimi
|
||||||
|
hostname: kimi
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
volumes:
|
||||||
|
- ./workspace:/workspace
|
||||||
Reference in New Issue
Block a user