Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Applications: Your Apps, Your Rules

An Application is a fully managed, ready-to-run service — like a website, media server, or development tool — deployed and run on your Citadel Territory.

Think of it like a plug-and-play app:

  • No Linux setup
  • No Docker commands
  • No config files
    Just pick an app, click "Install," and it runs — all in your private Territory.

What an Application Is

An Application is:

  • A pre-packaged service (web app, file sync, media server, etc.)
  • Fully isolated within your Territory
  • Automatically managed by CitadelHosts (updates, backups, scaling)
  • Accessible via a unique URL (e.g., <your-unique-sub>.citadelhosts.com) or internal network

🌐 You can even connect apps within the same Territory — like a database talking to a web app.


What an Application Is Not

  • ❌ Not a full server (you can’t SSH into it)
  • ❌ Not a custom script or Docker container (yet — but coming soon)
  • ❌ Not a full OS or VM (you don’t manage the OS layer)

✅ You focus on what you want to run — we handle the rest.


Examples of Applications You Can Run

AppUse Case
JellyfinStream your movies, music, and photos
GiteaHost your Git repos and CI/CD pipelines
NextcloudRun your own cloud storage and file sync
WordPressLaunch a personal blog or website
Act RunnerRun automated workflows (CI/CD)

🔮 More apps coming soon — we’re adding new ones every week.


How Applications Work in CitadelHosts

  1. You choose a Territory (e.g., “Media”, “Dev Team”)
  2. You click "Add App" on your Dashboard
  3. You select an app from our catalog
  4. You click Install
  5. CitadelHosts handles the rest — deployment, configuration, and monitoring

✅ No terminal. No Docker. No config files. Just click and go.


Customization Coming Soon...

🛠️ In the near future, you’ll be able to:

  • Change storage limits
  • Set environment variables
  • Adjust ports and network settings
  • Connect to external databases
  • Provide custom Container images

We’re building this for you — stay tuned!


Application Details

Once installed, each Application has a dedicated details page where you can:

  • Control access and authentication
  • Monitor performance
  • Manage backups
  • Adjust storage
  • View usage metrics

You’ll find this page from your Dashboard by clicking on the app name in your Territory.


🔐 Application State Control and Access

The top of the Application details page has a section that contains your Application's access link, controls, and authentication toggle.

Top of application details page screenshot

After installing an Application it will go into the Queued state. Once the Application reaches the Created state, you can start it by accessing the controls at the top of the Application's details page. If your Application is in the Running state, you can then access the Application by clicking on your link present on the page.

The Require Authentication toggle allows you to tie into the CitadelHosts authentication system before accessing your app link. When applications require authentication through CitadelHosts the link will only be accessible if an authentication cookie is present in the browser that is trying to access this link. In other words, in order to access that application the accessor must be logged into the CitadelHosts account of the user that owns that application.

🛡️ Require Authentication
When enabled, only users logged into your CitadelHosts account can access the app.
This prevents public exposure — great for sensitive apps or those without their own authentication system like Sync-In or Trilium.


Application Status

The status section allows you to see the current state of the Application, as well as view a graph of the CPU and Memory usage.

Application details page status section screenshot

Applications can have the following states:

StateMeaning
QueuedConfiguration is waiting to be processed
CreatedApp is installed and resources allocated
RunningApp is active and accessible
StoppedApp is paused (saves resources)
DeletedApp is permanently removed
UnknownSystem error — contact support

💡 Tip: If your app is stuck in "Queued" for >5 minutes, check your Territory’s resource limits.

Application Backups

The backups section gives you the control of enabling backups for your application. You can check if backups are enabled, enable them if they are not, and restore from backups from this section. To restore from a backup, simply press the "Restore" button.

Application details backups screenshot

This system will be receiving updates expect changes to come.

Backups are enabled by default for all apps
You can disable them, but we strongly recommend keeping them on.

⚠️ Restoring from a backup will replace all current data
Always double-check before restoring.


📦 Application Storage: Manage Data with Confidence

The Storage section gives you full visibility into how your Application uses space — including containers and mounted volumes. You can see:

  • Which containers are running
  • How much storage each one uses
  • Which volumes are attached and their size

This helps you understand your app’s resource usage and plan upgrades or optimizations.


🔧 Two Powerful Controls (Use with Care)

You have two key tools here:

  • Upload — Replace a volume with data from a .tar file
  • Stack — Mount a shared Storage Volume to your app

⚠️ Warning: Both actions replace all data in the target volume.
Always double-check before proceeding — this cannot be undone.


📤 Upload: Migrate Data from Another System

Use the Upload button to bring existing app data into CitadelHosts.

When to use it:

  • Migrating from another server
  • Replacing a broken or corrupted volume
  • Restoring from a backup

How it works:

  1. Click the Upload icon
  2. Select a .tar file containing your app’s data
  3. Choose which volume to replace (e.g., “Media Data”)
  4. Confirm and wait for the upload to complete

🔄 Example: Upload a .tar file of your old Jellyfin library to restore your media collection.


🔗 Stack: Share Storage Across Apps (Advanced)

The Stack button lets you mount a Storage Volume to your Application — enabling powerful data sharing across your Citadel.

Why it’s useful:

  • Share a single media library between Jellyfin and a web app
  • Reuse a database volume across multiple services
  • Centralize backups or configuration files

How it works:

  1. Click the Stack button
  2. Select the Storage Volume you want to mount (e.g., “Shared Media”)
  3. Choose which volume in your app to replace (e.g., “Media Storage”)
  4. Confirm — the volume is now shared

🔁 Example: Mount a “Shared Media” volume to both your Sync-In app and your Jellyfin instance to have control of your media library in Jellyfin.

Application details storage screenshot

Pro Tips

  • ✅ Use separate Territories for different types of apps (e.g., media, dev, file storage)
  • ✅ Start with a Watchtower Territory for lightweight apps
  • ✅ Keep your apps updated — CitadelHosts handles updates automatically

🛡️ Your apps. Your data. Your Citadel.


Quick Reference: Application Management

ActionWhere to Find It
Start/Stop AppTop controls on details page
Enable AuthenticationAccess controls section
View UsageStatus graph
Enable BackupsBackups section
Restore from BackupBackups → "Restore" button
Upload DataStorage → Upload button
Share StorageStorage → Stack button

Need Help?

💬 Contact us anytime — we’ll help you pick the right app or design your setup.