Welcome to CitadelHosts
Your private, secure, and scalable cloud — built for creators, developers, and teams.
With CitadelHosts, you own your data. No vendor lock-in. No hidden fees. Just powerful, easy-to-use infrastructure — on your terms.
CitadelHosts was built with container hosting as the top priority, you only need the resources required to run your container. This gives you a first-class experience running your containerized applications on CitadelHosts.
Whether you're running a personal media library, automating CI/CD pipelines, backing up photos, or launching your own containerized application, CitadelHosts gives you full control over your digital life — all from a simple, intuitive dashboard.
Why CitadelHosts?
- 🔒 Privacy-first: Your data stays on your territory.
- ⚙️ Flexible: Deploy any app — from Gitea to Jellyfin to Nextcloud.
- 🔄 Automated: Backups, updates, and scaling are handled for you.
- 🧔 We're Here For You: We are here to help. Contact us if you have special requirements and we can make it work!
🚀 Start building in minutes — no coding required.
Quick Start
Explore Use Cases
See how others are using CitadelHosts:
- DevOps with Gitea & Action Runner
- Media Player with Jellyfin + Sync-In
- Photo Backup with Immich
- Cloud Storage Replacement
Need Help?
Get Started in 4 Easy Steps
Deploying your first application on CitadelHosts is simple — no technical experience needed.
💡 You’ll have your app running in under 5 minutes.
Step 1: Go to Your Dashboard
Log in to your CitadelHosts dashboard.
Step 2: Create a New Territory
Click "Create Territory".
- Choose your specs (CPU, RAM, storage)
- Click "Deploy"
📌 A Territory is your private server space — like a secure pod for your apps.
Step 3: Add an Application
Go to your new Territory and click "Add App".
- Browse the app catalog (Gitea, Jellyfin, Nextcloud, Immich, and more)
- Select your desired app
- Review the application details. You can modify specific configurable environment variables.
- Click "Deploy"
✅ Your app is now being deployed.
Step 4: Access Your App
Back at your Dashboard you will see that your Territory has your application in it. You will still need to start the application to access it.
Start and access your application:
- Click the link that is the name of your application
- You are on your [application details][/components/applications.html#application-details] page
- Click "Start" and wait for the application to be "Running"
- Access your application with the access link on the same page
- You’ll be redirected to your new app (e.g.,
<unique-app-link>.citadelhosts.com)
🎉 You’re live!
What’s Next?
- Explore Use Cases
- Create Your Own Cloud Storage
- Run Your Own DevOps Platform
- Learn about Applications
- Set up automatic backups
📌 Pro Tip: You can scale your Territory anytime — no downtime.
Use Cases
Create Your Own Personal Cloud Storage
Replace Dropbox, Google Drive, or OneDrive — with full control and privacy.
The Problem
Public cloud storage services like Dropbox, Google Drive, and OneDrive offer convenience, but they come with significant trade-offs:
- Limited control: You don’t own your data — providers can access, scan, or share it under certain conditions.
- Privacy concerns: Data is stored on third-party servers, often in undisclosed locations.
- Vendor lock-in: Migrating data between platforms is cumbersome and sometimes impossible.
- No customization: You can't modify features, integrate with other tools, or tailor the experience.
By setting up your own cloud storage, you regain full ownership of your data, ensure privacy, and gain complete control over access, sharing, and infrastructure.
The Solution
Self-hosted cloud storage gives you the freedom to store, manage, and share files on your own terms. Whether you're an individual managing personal documents or a small team collaborating securely, self-hosting eliminates reliance on external providers.
In this guide, we’ll walk you through setting up Sync-In, a lightweight, secure, and easy-to-deploy open-source cloud storage solution. It’s ideal for personal use or small teams and integrates seamlessly with Citadel Hosts’ Watchtower Territory infrastructure.
Video Tutorial
💡 Pro Tip: Watch the video for a visual walkthrough of each step.
Step-by-Step Setup Guide
1. Choose Your Cloud Storage Platform
While several open-source options exist, we recommend Sync-In for this tutorial due to its:
- Minimal resource footprint
- Clean, intuitive UI
- Fast deployment via Citadel Hosts
- Strong security model with end-to-end encryption (optional)
- Built-in file sharing and access controls
Other popular alternatives:
- Nextcloud: Feature-rich with calendar, contacts, video conferencing, and collaboration tools. Best for larger teams.
- Seafile: Optimized for performance and large-scale file handling; supports virtual file systems and selective syncing.
2. Access the App Library
Log in to your Citadel Hosts dashboard and navigate to the Apps section in the sidebar.
You’ll see a list of pre-configured applications ready to deploy.
3. Deploy Sync-In
- Search for Sync-In in the App Library.
- Click on the application.
- Select the Watchtower Territory where you want to host your cloud storage.
- Configure the following environment variables:
INIT_ADMIN_LOGIN: Set a unique username (e.g.,admin).INIT_ADMIN_PASSWORD: Set a strong, secure password (e.g.,MySecurePass!2025).- (Optional)
DOMAIN— if you plan to use a custom domain later.
⚠️ Security Note: Never use default credentials. Use a password manager to generate and store your credentials securely.

4. Create a Storage Volume
To store your files, you’ll need dedicated storage. Sync-In requires a persistent volume to save user data.
- Go to the Storage section in your dashboard sidebar.
- Click Create Storage Volume.
- Fill in the details:
- Size: Start with 500 GB (adjust based on your needs).
- Storage Type:
- HDD: Cost-effective, suitable for most personal use.
- SSD: Faster performance, better for frequent access or large files.
- Region: Choose the same region as your Watchtower Territory for optimal latency.
- Click Create Volume.

5. Attach Storage to Sync-In
Now, link your storage volume to your Sync-In instance.
- Go to the App Details page for your Sync-In deployment.
- Scroll down to the Storage section.
- Click the Mount Storage icon.
- Select the storage volume you just created.
- Mount it to the
datavolume path (this is the default expected directory for Sync-In’s file storage).
✅ Ensure the mount point is set to
data— this is critical for Sync-In to function correctly.
6. Start Your Cloud Storage
Once the volume is attached:
- Click Start to launch your Sync-In instance.
- Wait a few moments for the application to initialize.
Your unique access URL will appear at the top of the App Details page.
👉 Example: https://syncin-abc123.citadelhosts.com
🛡️ Security Reminder: Share this link only with trusted individuals. You can also enable two-factor authentication (2FA) in the app settings once logged in.
Access and Use Your Cloud Storage
- Open the access link in your browser.
- Log in using the admin credentials you set earlier.
- Create folders, upload files, and invite others via share links.
- Use the web interface or install the Sync-In client for desktop/mobile to sync files automatically.
Advanced Tips & Best Practices
- Backups: Schedule regular backups of your storage volume to prevent data loss.
- Monitoring: Use Citadel Hosts’ dashboard to monitor storage usage and performance.
- Custom Domain: Once ready, point a custom domain (e.g.,
cloud.yourname.com) to your instance via DNS.
Conclusion
With just a few clicks, you’ve replaced third-party cloud storage with a private, secure, and fully customizable solution. You now control your data, your privacy, and your digital footprint.
Whether you're backing up photos, collaborating with friends, or managing team files, your own cloud storage is fast, reliable, and entirely under your control.
Automate Your Workflow with Gitea & CI/CD
Run your own Git server and CI/CD pipelines — all in one place.
Guide coming soon.
Stream Your Media — and Manage Files
Own your own media streaming service, supporting video, music, and photos.
The Problem
Streaming services, like Netflix, Hulu, and Spotify, have been gradually raising their prices and the services are splitting which shows are available on each of them. So you continue to pay more for shows that you have no control over which movies and shows are available on.
If you have movies, music, or any media that you want to be available to you for your entire life and even to your children's lives, you have to own that media yourself.
The Solution
Use CitadelHosts to:
- Stream all of your content through Jellyfin
- Use Sync-In to sync files from your computer or manage them in your browser
- Create a Storage Volume to connect a storage backend to the applications
In this guide we will walk you through setting all of this up on CitadelHosts, but the concept is possible to be done on any self hosted hardware as well.
Video Tutorial
Setup Steps
1. Create a Territory (e.g., media-territory)
First step is to provision a Territory to host your media server on. On CitadelHosts this is as easy as navigating to your dashboard at citadelhosts.com/dashboard.
You then can select the "Create Territory" button to bring up the Territory creation modal.

We will be creating a Watchtower for the purposes of this guide as that is probably the best place for most users to start. High resolution video encoding can be resource intensive, especially if you anticipate multiple streams (multiple users) on your Jellyfin instance. You may need to increase your resource allocation for the Territory providing your media serving if you find the Watchtower resources are not sufficient.
2. Add Jellyfin & Sync-In to Territory
Your newly provisioned Territory is ready to have applications installed on it. To do this, navigate to your dashboard and select "Add App". Select Jellyfin, then repeat this for Sync-In.

We will be installing Jellyfin. Jellyfin is an open-source media streaming application. They have a large community of supporters around the project. They even have applications supporting many different devices, like Roku, iOs, and Android. Jellyfin has great documentation and it might be worth reading their project documentation if you want to dive deeper into it. After you add Jellyfin to your Territory click on the link for the application in your dashboard to view the application's details page. From here you can press Start on Jellyfin and wait for the application to begin running.
After Jellyfin has started running you can click on your access link at the top of the Jellyfin details page to begin the setup process for Jellyfin. You will be presented with a welcome page and you can step through the quick start guide. But generally you just need to hit next through the Wizard and setup a username and password for your instance. Do not worry about setting up a media library because we will be adding that later after we setup the Storage Volume.

Sync-In is the application that we will be using to manage the actual media files in our media server. Sync-In provides WebDAV support so that we can mount a network drive to our personal laptops to upload files to our media server from our computers. We are going to do the same thing with Sync-In, get the application started and then navigate to the access link for this application once it is running.
Sync-In is going to be initialized with the username "sync-in" and the password "sync-in". This is just the defaults set for the application on CitadelHosts. You are going to want to change these as they are not secure and anyone could access your media files unless you turn on the require authentication toggle for requiring CitadelHosts authentication to access the app. But this will block you from mounting the application as a network drive.

You can change the username and password by navigating to the top right of your Sync-In instance, after logging in. Select your user account and hit the cog icon to go to settings. You will then navigate to Edit User. Inside the Password field you can type a new password and hit Confirm.

3. Add Storage Volume → Name it Media Library
The cool part about CitadelHosts here is that we can share a storage backend across these two applications. This lets us combine these two applications to work together and provide a better user experience.
Navigate to your Storage Volumes page at citadelhosts.com/dashboard/storage. From here you will select "Create Storage Volume". This will pop up a modal.

You can choose the type of storage that you think would be best for your needs. SSD storage is going to be faster but more expensive. HDD storage is slower but cheaper. For this guide, the recommendation is to create HDD storage and to start with 500 GB.
Now we can mount this storage backend to our two applications. To mount a storage volume to an application you can navigate to the application details page. Remember, we get there by going to the dashboard at citadelhosts.com/dashboard and then clicking on the link for our application inside of our territory. So for this guide the links would be for Jellyfin and Sync-In inside of our media-territory.
Scroll to the bottom of the application details page to control the application's storage. Click on the Stack icon to mount a Storage Volume to the application.

This will bring up the control modal to mount a storage volume. Select the Storage Volume that we just created and mount it to the media volume for Jellyfin. For Sync-In, you will select the same Storage Volume but mount it to data volume for Sync-In.

4. Sync your files → From your laptop or phone
You can now upload files to your Sync-In instance. My recommendation is to create a folder under Personal in Sync-In and call it Movies for your Movies and another one for TVShows. You can learn more about how the files should be organized on Jellyfin's documentation. This page shows for movies.

We also need to configure Jellyfin to be able to find our new media files. To do this, you should go back to your Jellyfin application, select the User icon in the top right and then hit Dashboard. This is where you control your Jellyfin instance, but we are interested in the Libraries section -> so click on that.

Now you can press on Add Library. This will open a new window. Select your media type and then navigate to the /media/<the folder in your Sync-In instance>.
5. Stream → Open Jellyfin and enjoy!
That's it! You can now add media as you collect it and stream your collection from anywhere. That's better than the theaters!
🎥 Watch movies, listen to music, browse photos — all from one place.
Benefits
- ✅ Full file control
- ✅ Private, secure, and fast
📌 Ideal for personal media libraries, home theaters, or shared family collections.
Never Lose a Memory Again
Automatically back up your photos — and organize them with AI.
Guide coming soon.
Components of CitadelHosts
| Component | What It Is | Why It Matters |
|---|---|---|
| Territories | Your private, isolated server space | Isolates apps, controls resources, and secures data |
| Applications | Ready-to-run services (Jellyfin, Gitea, WordPress) | No setup — just install and go |
| Storage Volumes | Shared, persistent storage backends | Reuse data across apps, give apps more storage |
| Backups | Snapshots of your app data | When things go wrong, you can go back |
Territories: Your Private, Secure Server Space
A Territory is your private pod — a secure, isolated environment where you run your apps, manage data, and keep control of your digital life.
Think of it like a private server, but resources are only used by applications:
- Your apps run in isolation
- Your data stays yours
- Your resources are fully dedicated
Every app you deploy on a Territory shares:
- CPU and RAM (within limits)
- Storage (your allocated space for territory, not Storage Volumes)
- Network (apps can talk to each other by name)
🌐 This means you can run a web app, a database, and a file sync tool — all on the same Territory — and have them communicate seamlessly.
Choose Your Territory Tier
You can create multiple Territories — each with its own specs. Here are your options:
1. Watchtower (Beginner-Friendly)
Perfect for individuals, small teams, or testing.
- 1 vCPU
- 2 GB RAM
- 20 GB SSD Storage
Ideal for:
- Personal websites
- Lightweight apps
- Development or staging environments
- 1–10 users
🎯 Start here if you’re new to CitadelHosts.
2. Stronghold (Power User)
Built for real workloads and growing teams.
- 6 vCPUs
- 16 GB RAM
- 320 GB SSD Storage
Ideal for:
- Media servers (Jellyfin, Plex)
- CI/CD runners (Gitea + Action Runner)
- Nextcloud or other file storage
- 10–50 users
💡 Great for production apps or teams needing more power.
3. Enterprise (Custom Solutions)
For advanced users, teams, or businesses with unique needs.
- Custom CPU, RAM, and storage
- Priority support
📌 Not ready yet?
We’re building this for you.
Let us know your needs — we’ll help you design the perfect setup.
👉 Contact us to discuss your requirements.
✅ How to Create a Territory
- Go to your Dashboard
- Click "Add Territory"
- Choose your tier: Watchtower, Stronghold, or Enterprise
- Click Create
Your new Territory will appear in your dashboard within seconds.
🚀 Pro Tip: Start small with Watchtower, then scale up as your needs grow.
📌 Adding Applications to a Territory
Once your Territory is created:
- Go to your Dashboard
- Click on the Territory you want to use
- Click "Add App"
- Browse for the app (e.g., “Jellyfin”, “Nextcloud”)
- Click Install
The app will be deployed automatically. You’ll see it appear in your Territory’s list.
🔮 Customization coming soon — you’ll be able to tweak settings, ports, environment variables, and even container images.
📊 Viewing Your Territories
All your Territories appear in your Dashboard, where you can:
- See real-time resource usage (CPU, RAM, storage)
- Monitor app performance
- Upgrade or manage apps
⚠️ If your Territory is near capacity:
- Consider upgrading to a larger tier
- Or move some apps to a second Territory

🗑️ Deleting a Territory
🛠️ Coming soon — you’ll be able to delete Territories when no longer needed.
💡 Tip: Before deleting, ensure you’ve backed up any data or moved apps to another Territory.
🔧 Modifying a Territory
🛠️ Coming soon — you’ll be able to upgrade or downgrade your Territory’s specs.
✅ In the meantime, if you need more power:
- Create a new Territory with better specs
- Move apps over
- Delete the old one when done
🧩 Pro Tips
- ✅ Use separate Territories for different purposes (e.g., one for web apps, one for media)
- ✅ Start with Watchtower, scale up as you grow
- ✅ Name your Territories clearly (e.g., “Jellyfin Media”, “Team Dev”)
🛡️ Your data, your rules. Your Citadel.
Need Help?
💬 Contact us anytime — we’re here to help you build the perfect setup.
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
| App | Use Case |
|---|---|
| Jellyfin | Stream your movies, music, and photos |
| Gitea | Host your Git repos and CI/CD pipelines |
| Nextcloud | Run your own cloud storage and file sync |
| WordPress | Launch a personal blog or website |
| Act Runner | Run automated workflows (CI/CD) |
🔮 More apps coming soon — we’re adding new ones every week.
How Applications Work in CitadelHosts
- You choose a Territory (e.g., “Media”, “Dev Team”)
- You click "Add App" on your Dashboard
- You select an app from our catalog
- You click Install
- 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.

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.

Applications can have the following states:
| State | Meaning |
|---|---|
| Queued | Configuration is waiting to be processed |
| Created | App is installed and resources allocated |
| Running | App is active and accessible |
| Stopped | App is paused (saves resources) |
| Deleted | App is permanently removed |
| Unknown | System 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.

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
.tarfile - 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:
- Click the Upload icon
- Select a
.tarfile containing your app’s data - Choose which volume to replace (e.g., “Media Data”)
- Confirm and wait for the upload to complete
🔄 Example: Upload a
.tarfile 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:
- Click the Stack button
- Select the Storage Volume you want to mount (e.g., “Shared Media”)
- Choose which volume in your app to replace (e.g., “Media Storage”)
- 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.

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
| Action | Where to Find It |
|---|---|
| Start/Stop App | Top controls on details page |
| Enable Authentication | Access controls section |
| View Usage | Status graph |
| Enable Backups | Backups section |
| Restore from Backup | Backups → "Restore" button |
| Upload Data | Storage → Upload button |
| Share Storage | Storage → Stack button |
Need Help?
💬 Contact us anytime — we’ll help you pick the right app or design your setup.
Storage Volumes
A Storage Volume provides your applications with additional storage resources.
What It’s For
- Increase storage available to applications
- Share files between applications
These docs are are coming soon.
Backups: Your Safety Net
Your data is precious — protect it with automatic backups.
Backups are a critical component of data protection, ensuring that you can recover your applications and data in the event of accidental deletion, system failure, or security breaches. With our automated backup system, you can safeguard your data with minimal effort and maximum reliability.
You can enable backups for each individual application hosted on your platform. When configuring backups, you have full control over the schedule and retention policy. Choose from three backup frequencies: daily, weekly, or monthly, depending on your data change rate and recovery requirements.
Additionally, you can specify how many backups to retain by selecting either:
- Keep Last: Automatically retains the most recent backups up to a specified number (e.g., keep last 26).
For example, if you select weekly backups and set "Keep Last 26," the system will create one backup per week and retain the most recent 26 backups—equivalent to approximately six months of history. When a new backup is created beyond the retention limit, the oldest backup is automatically deleted to maintain your chosen retention policy.
Restoring a backup will overwrite the current state of the application, including all data, configurations, and files. Therefore, it’s recommended to review the backup’s contents and ensure that no critical changes are lost before proceeding with restoration.
By leveraging automated backups, you gain peace of mind knowing that your data is protected and recoverable at any time.