mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-27 12:18:59 +00:00
cd3d7b23be
Show a pulsating warning dot next to host ports that are already in use by a running container. Hovering over the dot reveals which Sencho-managed stack or external app occupies the port. Adds GET /api/ports/in-use endpoint that returns a map of bound host ports with ownership info, and a getPortsInUse method on DockerController that reuses the existing container-to-stack resolution logic.
98 lines
5.0 KiB
Plaintext
98 lines
5.0 KiB
Plaintext
---
|
|
title: App Store
|
|
description: Browse and deploy pre-configured application templates in one click.
|
|
---
|
|
|
|
The **App Store** tab lets you browse a curated catalogue of Docker Compose templates and deploy any of them as a new stack with environment-specific configuration, no YAML required.
|
|
|
|
<Frame>
|
|
<img src="/images/app-store/app-store-overview.png" alt="App Store showing a grid of application templates with category filters" />
|
|
</Frame>
|
|
|
|
## Browsing templates
|
|
|
|
Templates are loaded from a remote registry (configurable in **Settings > App Store**). The default registry is LinuxServer.io. A live count of available apps is shown next to the category pills.
|
|
|
|
**Search:** Type in the search bar to filter templates by name, description, or category in real-time.
|
|
|
|
**Categories:** Click any category pill to narrow the list:
|
|
`All` · `Automation` · `Books` · `Development` · `Documentation` · `Downloaders` · `Media` · `Monitoring` · `Networking` · `Other` · `Productivity` · `Security` · `Utilities`
|
|
|
|
Each template card shows:
|
|
- Application logo (or a placeholder icon if unavailable)
|
|
- Name and short description
|
|
- Up to three category badges (click a badge to filter by that category)
|
|
|
|
## Deploying a template
|
|
|
|
Click any template card to open the **deployment sheet** on the right side of the screen.
|
|
|
|
<Frame>
|
|
<img src="/images/app-store/app-store-deploy.png" alt="Deployment sheet for heimdall showing stack name, ports, volumes, and environment variables" />
|
|
</Frame>
|
|
|
|
The sheet header displays the app logo, title, and a truncated description with a **Read more** / **Read less** toggle. Below the description you may see:
|
|
|
|
- **Architecture badges** (e.g. `amd64`, `arm64`) when the template declares supported platforms
|
|
- **GitHub stars** count
|
|
- **Source** link to the GitHub repository
|
|
- **Docs** link to the official documentation
|
|
|
|
When deploying to a remote node, a badge at the top of the sheet shows the target node name.
|
|
|
|
### Stack name
|
|
|
|
Pre-filled with the template name in lowercase. You can change it; the same [naming rules](/features/stack-management#creating-a-stack) apply (lowercase, hyphens, no spaces).
|
|
|
|
### Ports
|
|
|
|
For each exposed port, the sheet shows an editable **host port** field (left side) and the fixed **container port** (right side). Edit the host port to avoid conflicts with other services on the same machine. Ports must be in the valid range (1 to 65535); invalid values are highlighted and block deployment.
|
|
|
|
If a host port is already in use by a running container, a pulsating warning dot appears next to the port. Hover over the dot to see which application is using the port. If the application is managed by Sencho, the stack name is shown; otherwise the indicator reads "used by an external app".
|
|
|
|
<Frame>
|
|
<img src="/images/app-store/app-store-port-conflict.png" alt="Port conflict indicator showing port 8080 is used by heimdall" />
|
|
</Frame>
|
|
|
|
### Volumes
|
|
|
|
For each container mount point, enter the **host path** where that data should be stored. Suggested defaults (e.g. `./config`, `./data`) are pre-filled.
|
|
|
|
<Note>
|
|
Relative paths like `./config` are resolved relative to the stack directory inside your `COMPOSE_DIR`. Absolute paths map directly to the host filesystem.
|
|
</Note>
|
|
|
|
### Environment variables
|
|
|
|
Each template declares the variables it needs. Sencho pre-fills sensible defaults where available (e.g. `PUID=1000`, `PGID=1000`, `TZ` from your browser locale). Edit any value before deploying.
|
|
|
|
### Custom variables
|
|
|
|
Below the template variables, an **Add Custom Variable** section lets you define arbitrary key-value pairs not declared by the template. Type a key and value, then click **+** to add it. If you add a key that already exists in the template defaults, a warning will let you know your custom value will override the default.
|
|
|
|
### What happens on Deploy
|
|
|
|
1. Sencho creates a new stack directory in `COMPOSE_DIR`
|
|
2. Writes the generated `compose.yaml` (and `.env` file if environment variables are configured)
|
|
3. Runs `docker compose up -d`
|
|
4. On success: switches you to the Editor view for that stack
|
|
5. On failure: rolls back by running `docker compose down` and deleting the stack directory
|
|
|
|
A toast notification confirms success or shows the error message. Large images may take a few minutes to pull.
|
|
|
|
If a previous stack with the same name was removed outside of Sencho (for example, through the Docker CLI or Docker Desktop), the leftover directory is cleaned up automatically and the deploy proceeds as normal.
|
|
|
|
<Note>
|
|
Deploying a template requires the `stack:create` permission. Users without this permission will see the Deploy button disabled.
|
|
</Note>
|
|
|
|
## Custom template registry
|
|
|
|
By default Sencho uses the LinuxServer.io template registry. To use your own:
|
|
|
|
1. Open **Settings > App Store**
|
|
2. Enter your registry URL (must serve a JSON array of template objects in Portainer v2 format)
|
|
3. Click **Save & Refresh**
|
|
|
|
Sencho saves the new URL and automatically refreshes the template cache from the new source. To revert to the default registry, click **Reset to Default**.
|