Replace host port vars with macvlan vars in require_vars. Add Step 2
to create the macvlan gitea_net network on Unraid. Update
docker-compose rendering to use GITEA_CONTAINER_IP and
DB_CONTAINER_IP instead of port mapping. Renumber steps accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove ports: section (no more host port mapping). Add networks:
with static ipv4_address for gitea and db containers. Reference
external gitea_net network (macvlan created by phase scripts).
Add DB_CONTAINER_IP for database service networking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove UNRAID_GITEA_PORT, UNRAID_GITEA_SSH_PORT, FEDORA_GITEA_PORT,
FEDORA_GITEA_SSH_PORT from required validation. Add macvlan vars
(parent, subnet, gateway, ip_range, gitea_ip, caddy_ip) for both
hosts. Add UNRAID_DB_IP and FEDORA_DB_IP as optional validated vars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove UNRAID_GITEA_PORT, UNRAID_GITEA_SSH_PORT, FEDORA_GITEA_PORT,
FEDORA_GITEA_SSH_PORT — containers now use their own LAN IPs on
standard ports. Add DOCKER NETWORKING section with macvlan config
(parent interface, subnet, gateway, IP range) and per-container
static IPs (gitea, db, caddy) for both hosts. Update internal URL
comments to reference container IPs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace single-DB rationale with description of all four supported
backends (sqlite3, mysql, postgres, mssql) and how the toolkit
handles each.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When GITEA_DB_TYPE is not sqlite3, validate that GITEA_DB_HOST,
GITEA_DB_PORT, GITEA_DB_NAME, GITEA_DB_USER, and GITEA_DB_PASSWD
are set in the required vars check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After extracting the archive, import gitea-db.sql into the running
DB container for postgres/mysql/mssql. Each DB type uses its native
CLI tool inside the container. SQLite restores remain unchanged.
Add GITEA_DB_TYPE to require_vars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add db_type validation case. After GITEA_DB_TYPE prompt, conditionally
show 5 database connection prompts (host, port, name, user, passwd)
when DB type is not sqlite3. Auto-suggest default port per DB type
(mysql=3306, postgres=5432, mssql=1433). Update TOTAL_PROMPTS
dynamically.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mirror phase1 DB support: add _set_db_vars() and _strip_block()
helpers, conditional require_vars for DB connection, DB data directory
creation, and conditional template rendering for docker-compose and
app.ini based on GITEA_DB_TYPE.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add _set_db_vars() helper to configure DB-specific docker-compose
vars (image, env, healthcheck, data dir) for postgres/mysql/mssql.
Add _strip_block() to remove conditional template markers. Update
docker-compose and app.ini rendering to strip/populate DB blocks
based on GITEA_DB_TYPE. Conditionally require DB connection vars.
Create DB data directory for external databases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add DB_SERVICE_START/END markers for the database container and
DB_DEPENDS_START/END for the gitea service depends_on. Phase scripts
strip these blocks for sqlite3 and populate DB-specific vars
(image, env, healthcheck, data dir) for mysql/postgres/mssql.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase scripts strip the irrelevant block after render_template:
sqlite3 removes EXTDB_BLOCK, external DBs remove SQLITE_BLOCK.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add GITEA_DB_HOST, GITEA_DB_PORT, GITEA_DB_NAME, GITEA_DB_USER, and
GITEA_DB_PASSWD. These are only required when GITEA_DB_TYPE is not
sqlite3. Update DB_TYPE comment to list all valid options.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add validate_db_type() accepting sqlite3/mysql/postgres/mssql. Update
GITEA_DB_TYPE validator from nonempty to db_type. Add conditional DB
validation arrays (host, port, name, user, passwd) required when DB
type is not sqlite3. Rename SSL conditional arrays for clarity.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Capacity is now always set per-runner in runners.conf (smart defaults
applied during configure_runners.sh wizard).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Capacity defaults: Unraid=2, Fedora=2, macOS=1 (based on host type)
- Data path appends runner name to base path to prevent collisions
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- RUNNER_DEFAULT_DATA_PATH → RUNNER_DATA_BASE_PATH (clarify it's a host path)
- LOCAL_RUNNER_DATA_PATH → LOCAL_RUNNER_DATA_BASE_PATH
- Remove RUNNER_DEFAULT_CAPACITY (now smart defaults per host type in wizard)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace 3 hardcoded REPO_N_NAME prompts with:
- "How many repos?" prompt
- Loop for each repo name
- Saves as space-delimited REPO_NAMES in .env
TOTAL_PROMPTS computed dynamically after repo count is known.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update validate_runner_repos() to check against words in REPO_NAMES
- Update repos hint builder to iterate REPO_NAMES
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace REPO_1/2/3_NAME in required vars with REPO_NAMES
- Update GitHub repos existence check to iterate REPO_NAMES
- Update runner repos validation to check against REPO_NAMES words
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add get_repo_list() helper to split space-delimited REPO_NAMES
- Replace REPO_1_NAME/REPO_2_NAME/REPO_3_NAME with single REPO_NAMES in
_ENV_VAR_NAMES and _ENV_VAR_TYPES validation arrays
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>