New endpoints for debugging domain/container routing:
- GET /api/v1/domains/debug/diagnose/{app_id}: Full diagnostic report
with app config, domains, nginx status, docker containers, health
assessment and actionable recommendations
- POST /api/v1/domains/debug/test-routing/{app_id}: Active routing
tests to verify traffic flow
Both endpoints require admin access.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add diagnostic methods to NginxService:
- get_site_config(): Get config content, enabled status, parsed info
- diagnose_site(): Full diagnostic with health check and recommendations
- check_site_routing(): Test the complete routing chain
Includes automatic health assessment and actionable recommendations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add diagnostic methods to DockerService:
- check_port_accessible(): Test if a port has something listening
- get_container_port_bindings(): Get port mappings for a container
- get_container_network_info(): Get full network settings including IPs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detailed 8-task plan to fix port mapping and domain routing
- Adds diagnostic methods to DockerService and NginxService
- New debug endpoint for full routing diagnosis
- Frontend diagnostic UI for ApplicationDetail page
- Test script for manual verification
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- PROJECT.md: Define enhancement goals and success criteria
- ROADMAP.md: 10-phase plan covering Docker debugging, template
testing, private URLs, and UI polish
- STATE.md: Track progress across all phases
- Replace strategic roadmap with actionable implementation plan
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added '/var/serverkit' to ALLOWED_ROOTS for file browsing. Enhanced error handling for owner/group resolution to support missing pwd/grp modules and additional exception types. Improved get_disk_usage to check for path existence, handle permission errors, and avoid division by zero.
Updated log fetching logic in LogsTab to handle both array and string formats for Docker and regular app logs, ensuring logs are displayed correctly regardless of backend response structure.
Replaces a generic API call with api.getApps() and corrects the property access for apps data, ensuring only Docker apps are filtered and set. This resolves issues with loading and displaying Docker apps in the DockerDatabasesTab component.
Introduces UI and API integration for managing and querying databases running inside Docker containers, including a new 'Docker Apps' tab in the Databases page. Enhances the QueryRunner to support Docker databases and updates the ApplicationDetail logs tab to handle Docker app logs with auto-refresh. Adds corresponding API methods for Docker database and log operations.
Introduces a new /system/version API endpoint in the backend to provide the current ServerKit version, reading from possible VERSION files. Updates the frontend About section to fetch and display the version dynamically instead of hardcoding it.
App deletion now performs Docker cleanup, removes app folders, and cleans up Nginx configs, returning detailed cleanup results. TemplateService port variable generation now avoids ports in use by Docker containers and system processes, improving reliability for dynamic port assignment.
Implements endpoints for managing and querying MySQL/PostgreSQL databases running in Docker containers, including listing containers, databases, tables, and executing queries. Adds endpoints for retrieving app logs and real-time status for Docker apps. Updates template variable processing to flag auto-generated and hidden variables. Extends DatabaseService with Docker MySQL/PostgreSQL discovery and query utilities.
Automatically create, update, and delete nginx configs for Docker applications when domains are added or removed. Adds an endpoint to manually regenerate nginx configs for Docker apps. Updates TemplateService to detect port from multiple possible variable names (PORT, HTTP_PORT, WEB_PORT) when creating Docker app records.
- Add docker network prune and docker system prune before builds
- Use --no-cache for docker compose build to ensure fresh builds
- Add --force / -f flag to skip version check during update
- Helps prevent Docker networking issues
Usage: sudo serverkit update --force
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Same bug as before - the validate_installation function was using
.items() on variables expecting a dict, but templates now use
list format.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PHP apps should now be deployed via Docker using the php-app template.
This removes the host PHP management UI in favor of containerized deployments.
Removed:
- PHP.jsx page component
- PHP navigation link from sidebar
- PHP route from App.jsx
- PHP styles (_php.less)
The php-app template remains available for deploying PHP apps in Docker.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The compare_versions function returns non-zero values to indicate
version differences, but 'set -e' was causing bash to exit.
Now temporarily disabling exit-on-error during version comparison.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The validate_template function was failing because it expected
variables in dict format but templates now use list format.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add VERSION file (starting at 1.0.0)
- Add GitHub Actions workflow to auto-bump version on push
- patch: default for all commits
- minor: commits starting with "feat:" or "feature:"
- major: commits starting with "BREAKING:" or "major:"
- Add CLI commands: version, check-update
- Update 'serverkit update' to show semantic versions
- Compare local vs remote version before updating
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert variables to list format
- Use ${APP_NAME} for container names
- Standardize service names and port variables
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add APP_NAME as automatic variable for all template installs
- Handle both list and dict formats for template variables
- Update uptime-kuma, portainer, node-app templates with proper format
- Use ${APP_NAME} for container names instead of hardcoded values
- Standardize port variable names to HTTP_PORT
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Install script now copies bundled YAML templates to system directory
- Update command syncs templates on each update
- Creates /var/serverkit/apps directory for installed apps
Fixes 'No templates found' in Templates page.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- get_app_logs now checks for docker-compose.yml first
- Uses 'docker compose logs' for containerized apps
- Falls back to nginx logs for host-based apps
- Added /var/serverkit and /var/www to allowed log directories
Fixes 'Failed to load logs' error for Docker-deployed apps.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- install.sh now starts with cd /tmp to ensure valid directory
- uninstall command moves to /tmp before deleting install dir
- Shows reinstall command after uninstall
Prevents 'cannot access parent directories' errors when running
install from a deleted directory.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The update command now restores chmod +x on serverkit and scripts
after git reset --hard to prevent permission denied errors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Removed duplicate root templates/ folder
- Added PHP, Python, Node.js templates to marketplace (YAML format)
- Templates now installable via web UI Templates page
- CLI create-app now points users to web UI
- All 63 templates in one place: backend/templates/
New templates:
- php-app: Custom PHP 8.0-8.3 with Apache
- python-app: Custom Python 3.9-3.12 (Flask/FastAPI/Django)
- node-app: Custom Node.js 18-21 (Express/Next.js)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Host nginx routes domains to different apps
- ServerKit frontend moved to port 8080 (internal)
- New CLI commands: setup-proxy, add-site, list-sites, remove-site
- Site config templates for easy domain setup
- Install script now sets up nginx proxy automatically
Usage:
sudo serverkit add-site test.example.com 3000
sudo serverkit list-sites
sudo serverkit remove-site test.example.com
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>