- FastAPI backend with REST API endpoints - SQLite database for container metadata - Docker/Podman SDK integration with label filtering - Frontend: Server creation form and management page - Container operations: create, list, start, stop, delete - Single container deployment (nginx + Python + supervisor) - Support for Docker and Podman (rootless) - Volume management for persistent data
210 lines
7.6 KiB
Markdown
210 lines
7.6 KiB
Markdown
# Minecraft Launcher Reference
|
|
|
|
These are client-side Minecraft launchers that have excellent modpack installation workflows. Stronghold should aim to make server modpack installation as easy as these launchers make client installation.
|
|
|
|
## ATLauncher
|
|
**GitHub**: https://github.com/ATLauncher/ATLauncher
|
|
**Website**: https://atlauncher.com
|
|
|
|
### Overview
|
|
Minecraft launcher focused on modpack installation and management. Known for making modpack installation simple and user-friendly.
|
|
|
|
### Key Features
|
|
- **Modpack Browser**: Browse and search modpacks from various sources
|
|
- **One-Click Installation**: Install modpacks with minimal configuration
|
|
- **Instance Management**: Create multiple Minecraft instances with different modpacks
|
|
- **Modpack Updates**: Easy updating of installed modpacks
|
|
- **Server Pack Generation**: Can generate server packs from modpacks
|
|
- **Integration with Modpack Platforms**:
|
|
- CurseForge
|
|
- Modrinth
|
|
- FTB (Feed The Beast)
|
|
- **Version Management**: Manage Minecraft and mod versions
|
|
- **Mod Management**: View, enable, disable individual mods
|
|
- **Configuration**: Edit modpack configurations easily
|
|
|
|
### User Experience Highlights
|
|
- Simple, clean interface
|
|
- Clear categorization of modpacks
|
|
- Detailed modpack information before installation
|
|
- Progress indicators during installation
|
|
- Pre-configured settings that "just work"
|
|
- Easy troubleshooting
|
|
|
|
### Lessons for Stronghold
|
|
**This is a KEY reference** - the goal is to make modded server creation as simple as ATLauncher makes modpack installation.
|
|
|
|
Stronghold should:
|
|
1. **Modpack Browser**: Provide UI to browse/search modpacks
|
|
2. **One-Click Server Creation**: Create modded server from modpack in one click
|
|
3. **Server Pack Handling**: Automatically detect and install server packs
|
|
4. **Configuration Simplification**: Hide complexity, provide good defaults
|
|
5. **Mod Management**: Allow viewing/managing mods in installed servers
|
|
6. **Update Management**: Easy way to update modpacks
|
|
|
|
**Key Insight**: The magic of ATLauncher is that it handles all the complexity (downloading, dependency resolution, configuration, version matching) behind the scenes. Stronghold needs to do the same for servers.
|
|
|
|
---
|
|
|
|
## Prism Launcher
|
|
**GitHub**: https://github.com/PrismLauncher/PrismLauncher
|
|
**Website**: https://prismlauncher.org
|
|
|
|
### Overview
|
|
Fork of MultiMC, focused on modpack management. Open source and community-driven.
|
|
|
|
### Key Features
|
|
- **Multi-Platform**: Windows, macOS, Linux
|
|
- **Modpack Support**:
|
|
- Modrinth integration
|
|
- CurseForge integration
|
|
- FTB integration
|
|
- Technic Platform support
|
|
- **Instance Management**: Multiple instances with isolated configurations
|
|
- **Mod Management**: Individual mod installation, removal, updates
|
|
- **Version Control**: Git integration for instance management
|
|
- **Metadata Management**: Rich metadata for modpacks and mods
|
|
- **Customization**: Highly customizable interface and workflows
|
|
|
|
### Technology Stack
|
|
- C++/Qt for desktop application
|
|
- Various APIs for modpack platforms
|
|
|
|
### Lessons for Stronghold
|
|
- **Modrinth/CurseForge APIs**: Need to integrate with these platforms
|
|
- **Metadata Handling**: Rich metadata helps users make informed choices
|
|
- **Version Management**: Proper version handling is critical
|
|
- **Instance Isolation**: Each server should be isolated (Docker helps here)
|
|
|
|
### API Integration Notes
|
|
Both ATLauncher and Prism Launcher integrate with:
|
|
- **Modrinth API**: Modern modpack/mod platform
|
|
- **CurseForge API**: Legacy but still popular platform
|
|
- **FTB API**: Feed The Beast modpacks
|
|
|
|
Stronghold will need to:
|
|
1. Integrate with these APIs for modpack discovery
|
|
2. Handle server pack downloads from these platforms
|
|
3. Parse modpack metadata (version, dependencies, server pack info)
|
|
4. Manage modpack installation in Docker containers
|
|
|
|
---
|
|
|
|
## Key Takeaways for Stronghold
|
|
|
|
### The ATLauncher Experience, But for Servers
|
|
|
|
When a user wants to create a modded server, the flow should be:
|
|
|
|
1. **Browse Modpacks**: Search/browse available modpacks (like ATLauncher)
|
|
2. **Select Modpack**: Click on a modpack to see details
|
|
3. **Create Server**: One click to create server from modpack
|
|
4. **Automatic Setup**: Stronghold handles:
|
|
- Downloading server pack
|
|
- Setting up Docker container with correct server type (FORGE/FABRIC)
|
|
- Installing mods
|
|
- Configuring environment variables
|
|
- Setting up volumes
|
|
- Starting server
|
|
5. **Ready to Play**: Server is ready, user can customize further if needed
|
|
|
|
### Technical Requirements
|
|
|
|
1. **Modpack Platform Integration**:
|
|
- Modrinth API client
|
|
- CurseForge API client
|
|
- FTB API (if needed)
|
|
|
|
2. **Modpack Processing**:
|
|
- Parse modpack manifest files
|
|
- Download modpack files
|
|
- Extract server packs
|
|
- Handle mod dependencies
|
|
- Version resolution
|
|
|
|
3. **Docker Integration**:
|
|
- Detect server type (FORGE/FABRIC) from modpack
|
|
- Set appropriate `TYPE` environment variable
|
|
- Configure modpack installation
|
|
- Set up proper Java versions
|
|
- Allocate appropriate memory
|
|
|
|
4. **UI Components**:
|
|
- Modpack browser/search
|
|
- Modpack detail view
|
|
- Installation progress
|
|
- Mod management UI
|
|
- Server configuration tied to modpack
|
|
|
|
### Simplification Goals
|
|
|
|
**From User Perspective:**
|
|
- Before: User needs to know about modpack formats, server packs, FORGE vs FABRIC, Java versions, memory allocation, Docker, etc.
|
|
- After: User finds modpack, clicks "Create Server", server is ready
|
|
|
|
**Implementation Complexity:**
|
|
- Handle all the technical details internally
|
|
- Provide smart defaults
|
|
- Allow customization but don't require it
|
|
- Good error messages if something goes wrong
|
|
|
|
### Implementation Phases
|
|
|
|
**Phase 1: Basic Modpack Support**
|
|
- Manual modpack URL/ID input
|
|
- Support for Modrinth server packs
|
|
- Basic installation
|
|
|
|
**Phase 2: Modpack Browser**
|
|
- Integrate Modrinth API
|
|
- Browse/search modpacks
|
|
- Server pack detection and installation
|
|
|
|
**Phase 3: Enhanced Features**
|
|
- CurseForge integration
|
|
- Modpack updates
|
|
- Mod management UI
|
|
- Advanced configuration options
|
|
|
|
---
|
|
|
|
## Related Tools
|
|
|
|
### Server Pack Generators
|
|
Some modpacks come with server pack generators. Stronghold should:
|
|
- Detect if server pack is available
|
|
- Download server pack automatically
|
|
- Use itzg container's built-in modpack support when possible
|
|
- Handle cases where manual setup is needed
|
|
|
|
### itzg Container Modpack Support
|
|
The itzg/docker-minecraft-server container has extensive built-in modpack support ([Documentation](https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/)):
|
|
|
|
**Modpack Platforms**:
|
|
- Modrinth (auto-download)
|
|
- CurseForge (auto-download)
|
|
- Feed the Beast (FTB)
|
|
- Packwiz format
|
|
|
|
**Installation Methods**:
|
|
- `MODPACK` environment variable: Simple zip file or modpack ID
|
|
- `GENERIC_PACK` / `GENERIC_PACKS`: Install complete server content from archives
|
|
- Individual mods via `MODS` / `PLUGINS` environment variables
|
|
- File-based lists via `MODS_FILE` / `PLUGINS_FILE`
|
|
|
|
**Advanced Features**:
|
|
- Volume mounts for mods/plugins/configs (`/mods`, `/plugins`, `/config`)
|
|
- Auto-removal of mods/plugins
|
|
- Environment variable substitution in configs
|
|
- Multiple source directories
|
|
- Disable specific mods
|
|
|
|
**Key Insight**: The container handles much of the complexity internally. Stronghold's role is to:
|
|
1. Provide UI for modpack selection/browsing
|
|
2. Detect modpack platform and server type automatically
|
|
3. Generate appropriate environment variables
|
|
4. Handle the container creation with proper configuration
|
|
5. Manage modpack updates and mod additions/removals
|
|
|
|
Stronghold should leverage this built-in support heavily to simplify implementation - we don't need to reimplement modpack processing, just orchestrate it via the container's environment variables.
|
|
|