Enchanted Code

Now Self Hosted - #1

7 minutes read
Cover image for: 'Now Self Hosted - #1'

Intro

Welcome to the first issue of Now Self Hosted. As this is the first issue, let me explain what it’s about.

I plan to make this a brief review of apps I have recently self hosted. All the apps will most likely have a web based UI and be open source. The apps may be new and in development or well established (and even my own projects).

I hope to make this a monthly issue, although this will depend entirely on how much free time I have!

In this issue of Now Self Hosted, I will be taking a look at: Yacht, Uptime Kuma and Wiki.JS.

Now let’s look at our first app!

Yacht

The first app we will be taking a look at is Yacht; which describes itself as:

A container management UI with a focus on templates and 1-click deployments.

I recently discovered it while looking for an alternative to Portainer. While I found Portainer to be feature rich; I wanted something more lightweight. One feature missing to Portainer is the ability to look at the stats of each running container all at once, this is something Yacht does and I use on a regular basis.

Yacht states it can handle both Docker and Podman. I currently have it setup using Docker. It seems to run well on my Raspberry Pi 4, which hosts many containerized services (10+).

Setting up Yacht was very easy; using their provided Docker Compose file, which required no adjustments. After I ran the container and entered the default account details it was ready to go. Before using it further I did change the account details.

Here are some of the features I like:

  • The dashboard of running containers
  • Allows me to easily upgrade containers to new image versions
  • Template system for deploying apps with 1-click
  • Supports Docker Compose
  • Can manage external containers (not made within the app)

After adding their provided app templates from github.com/SelfhostedPro/selfhosted_templates, I saw that they had 1-click deploys for a lot of the services I already host (Wiki.JS, Pi-Hole and Vaultwarden). Their aim of making it easy to deploy new services; I would say is successful.

What I found interesting to read in their documentation is that it has a “projects” feature. This apparently allows you to have compose files in a dedicated folder and manage them through their web interface. This seems a better idea to me instead of Portainer’s way, which I think makes it harder to move away once you have everything managed by the app. This is definitely something I need to investigate more.

Now with all apps there is always something you don’t like. Mine is quite minor but I find the page that shows all current container stats refreshes too quickly. Whilst this might seem like a good thing, as you want to see what the current stats are in real-time. However, with a lot of services running this causes the UI to freeze while scrolling, I’m also not running a slow machine it has a Ryzen 5600X with 32GB of ram. Maybe this will be fixed in a future update; or there is a configuration I have missed, which allows the refresh time to be more delayed.

Overall I am happy with migrating to use Yacht rather than Portainer. But even now I am not using all the features being offered, maybe I will have a look for something that just shows me stats for containers; since I deploy all my containers using the Docker Compose CLI.

Uptime Kuma

I have recently started hosting a demo site for my newly released app “Web Portal”, check it out here github.com/enchant97/web-portal. I wanted a way of monitoring it; as it’s currently hosted on a friends server and monitoring it via Docker health checks was not possible. I started looking for a app that would monitor it over HTTP and notify me if it goes down. This is when I stumbled across “Uptime Kuma”.

This app describes itself as a monitoring tool for web services and more. Setting it up was very easy. Once running I just had to add a “monitor” and optionally setup notifications, which I set to use Discord. After that I created a public dashboard and added the “monitor” to it. Since I also run some other services like a NAS, I also added them to be checked. I used the ping monitor to check that my NAS is always up (since I have auto backups to it).

I have currently only tried out the HTTPS and Ping checking. But they work as expected, giving me a green status bar when operational and red when they go down, all status checks also include a timestamp (very handy). Since I had notifications setup; I also received a message on Discord with a detailed alert saying which service had gone down.

Since I like lightweight applications, I checked system usage and it was fine on my server (the RPI 4) taking up barely any resources. It offers a lot more features which I have not tried out yet, but this app will definitely stay running on my server.

Wiki.JS

As well as running tutorials on my website, I also like to run a personal wiki with all my notes from uni and a random assortment of other stuff. I had previously used OneNote and Evernote. I wanted something that would store notes in markdown (so I can switch to any editor I want in the future), but still have a web editor. So I went looking and found Wiki.JS.

Wiki.JS describes itself as:

The most powerful and extensible open source Wiki software

These are some of the features I like:

  • Git Repository Sync
  • Different authentication methods
  • Web editor
  • Supports diagrams using Mermaid, Kroki and draw.io
  • Media uploading
  • Search engine

I like the web UI layout as it looks modern and clean, also featuring a dark-theme which is quite good for my eyes; as it is not too dark. It does however require a database, but will optionally sync to a git repository. I personally think this is the best feature, as it allows me to backup notes easily to a separate machine (and keep them synchronised), they are also nicely put into markdown files; even the uploaded images are stored.

While everything I spoke about there are some things I don’t like. One of them being how the table of content works. It has a drop down folder structure but when you click between the folders it doesn’t take you there immediately, instead you have to click again on the index page for that folder. I also find navigating between pages is slower than I would like. It uses Vue for the front-end which is fine. I believe the performance hit is because the whole page is loaded each time you navigate between pages and this includes loading Vue.

The last problem I have is when saving a page, it takes a while; looking at my server utilisation it goes all the way to 100% on all cores. I am in the process of building a basic notes app (Note Mark), which renders markdown. I found that my program was way quicker for rendering the page (and saving), so I am unsure what happens during a save in Wiki.JS that would cause utilisation to go that high.

As a whole the app is quite good. Although I will still be looking for something better, I might even write my own wiki type app (maybe using Rust and SolidJS?).

Conclusion

Hope you enjoyed reading the first issue of “Now Self Hosted”. You can get notifications on when I release another article by following the RSS feed linked at the bottom of the page.

This post was not endorsed or sponsored by any of the mentioned parties. My views are my own.

Join The Community

Looking for more self-hosted, tech or programming content. Well this site is a good place to find all of that!

Stay informed about new posts or announcements about my apps join the community:

Want to help out? A great way of doing that is supporting me at: Buy Me A Coffee.

Comments

See Also

Buy Me A Coffee