The best way to self host
What is Self-Hosting?
Self-hosting means the practice of running some services yourself and maintaining and controlling it to the fullest extent you can. There are several reasons to self-host apps – you might be paranoid about Google / Apple having your data (photos, email, etc.), you might want to access a remote PC for work / school or host some website for your family and friends or just have fun tinkering and trying out new apps.
You can host a Google Photos like app, your own email client, a Wordpress website, Repl.it type service and much more. Although there are well written tutorials regarding all those different apps, I have found managing many apps and quickly trying out or debugging to be a huge bottleneck. It was a hassle and not the most fun thing to do especially when you want it to always work. Until I had found CapRover.
What is CapRover?
From its website -
CapRover is an extremely easy to use app/database deployment & web server manager for your NodeJS, Python, PHP, ASP.NET, Ruby, MySQL, MongoDB, Postgres, WordPress (and etc...) applications!
CapRover basically is a simple tool to manage, create and deploy all types of applications. It uses Docker at its core and has a powerful and super functional & beautiful GUI to manage everything. It has an amazing collection of one-click to install apps and it auto generates and renews Let's Encrypt SSL certificates, making it as easy as clicking a button to deploy your own Google Drive alternative. The best part is that even after removing the CapRover utility, all the apps continue to function. Did I mention it's open-source!
First off, you need a system to install CapRover on. For self-hosting the best thing is to have a server / old-pc / raspberry pi running in your home. You can also use a reputed Cloud Provider like Digital Ocean (affiliate link) to quickly create a small VM for free and play with it.
Currently, Oracle Cloud is offering amazing Always-Free tier with 2 AMD CPU cores or 4 ARM cores and 24 Gigs of RAM, also 200 GB storage, which is more than enough for most use-cases.
You can follow an amazing guide on their website to quickly get started, or Click here for my guide
CapRover should be available on the domain name you configured it with.
Once you login you will see a simple UI, click on one-click apps.
## Some Useful and Amazing Apps
Firstly, these are some apps which I use and love, though your preference may vary. Secondly, it's not just that you can JUST install the apps already there, but in fact you can install any you like (instructions for same), although most well maintained apps are already available as one-click images.
If you are using an ARM processor (Raspberry Pi / Graviton instance, etc.) some images might not work and some tweaks may be needed in the captain-definition file. One such example for WordPress is attached below, and I will be adding others as and when I find compatibility issues.
It is a must have all-in-one platform. It is Google Drive + Photos + Docs + iMessage combined. In fact it also has a huge library of apps you can install, within a Nextcloud instance. Link
Duplicati is a backup solution that takes encrypted backups to almost any provider of your choice (Backblaze, Onedrive, etc.) You might want to backup Nextcloud photos / notes or any other file to an offsite location. Link
An alternative front-end for YouTube. Very customizable and mobile-friendly! Link
Privacy friendly analytics platform for your websites. Link
A complete email server. Email hosting is hard, but with Poste.io not so much. Super easy and quick to setup. Link
A privacy-respecting meta search engine. Proxy your Google search results. Use multiple search engines – all from one place. Link
PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Link
VScode via code-server
Run VS Code on any machine anywhere and access it in the browser. This has been a game-changer for me personally as now I can code my school projects and assignments from a chromebook, desktop PC, or any other device, with continuity and is maintained perfectly between all the devices. Link
There are multiple RSS feed readers, database images, website platforms (Ghost, WP, etc.), File managers, Joplin server, Adguard Home, Plex, Etherpad, Gitea and many more. With CapRover you can easily try out as many as you want. Also you can host custom docker images, apps, etc.
With ability to easily (with press of a button) install and try out apps, auto generate SSL certs, and an amazing monitoring utility NetData already bundled in, it is the best platform to self-host most services (that offer docker images! – or which you can maintain). And probably the best for most users.
The only downside is that being a nodeJS application, its ram usage is a little high – although not even close to being a hinderance for most people.
Below are some sample templates, especually for ARM (useful to run on RPi, Graviton, etc.
CapRover ARM Wordpress Template
For Wordpress (with Database) –> using MariaDB for Databse
captainVersion: 4 services: $$cap_appname-db: image: arm64v8/mariadb:$$cap_database_version volumes: - $$cap_appname-db-data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: $$cap_db_pass MYSQL_DATABASE: wordpress MYSQL_USER: $$cap_db_user MYSQL_PASSWORD: $$cap_db_pass caproverExtra: notExposeAsWebApp: 'true' $$cap_appname-wordpress: depends_on: - $$cap_appname-db image: arm64v8/wordpress:$$cap_wp_version volumes: - $$cap_appname-wp-data:/var/www/html restart: always environment: WORDPRESS_DB_HOST: srv-captain--$$cap_appname-db:3306 WORDPRESS_DB_USER: $$cap_db_user WORDPRESS_DB_PASSWORD: $$cap_db_pass caproverOneClickApp: variables: - id: $$cap_db_user label: Database user defaultValue: wordpressuser validRegex: /^([a-zA-Z0-9])+$/ - id: $$cap_db_pass label: Database password description: '' validRegex: /^(\w|[^\s"'\\])+$/ - id: $$cap_wp_version label: WordPress Version defaultValue: '5.8' description: Check out their Docker page for the valid tags https://hub.docker.com/r/arm64v8/wordpress/tags validRegex: /^([^\s^\/])+$/ - id: $$cap_database_version label: Database Version, for MariaDB defaultValue: 'latest' description: We are USING MARIADB| Check out the Docker pages for the valid tags https://hub.docker.com/r/arm64v8/mariadb/tags validRegex: /^([^\s^\/])+$/ instructions: start: >- WordPress is an online, open source website creation tool written in PHP. But in non-geek speak, it’s probably the easiest and most powerful blogging and website content management system (or CMS) in existence today. Enter your WordPress Configuration parameters and click on next. A MariaDB (database) and a WordPress container will be created for you. The process will take about a minute for the process to finish. end: > Wordpress is deployed and available as $$cap_appname-wordpress . IMPORTANT: It will take up to 2 minutes for WordPress to be ready. Before that, you might see a 502 error page. displayName: WordPress description: WordPress is one of the most popular a content management system (CMS) based on PHP. documentation: Taken from https://docs.docker.com/compose/wordpress/. Port mapping removed from WP as it is no longer needed
If you found any typo, wanna reach out, or get in touch – Please email me at email@example.com