# Let's Host Things!

Now finally, we can easily host new containers and services, securely!&#x20;

## Let's try hosting ConvertX

{% embed url="<https://github.com/C4illin/ConvertX>" %}

A self-hosted online file converter. Supports over a thousand different formats. Written with TypeScript, Bun and Elysia.

<figure><img src="https://2807223923-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTUqAJOgHs57S8lmqdxRV%2Fuploads%2F9CaGHtxwVr9qFNDtL2fa%2Fimage.png?alt=media&#x26;token=d82cca4f-542d-4763-b076-b7a9ab3b6aaa" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### Let's use Docker Compose

From the Github:

```yaml
# docker-compose.yml
services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234 # will use randomUUID() if unset
      # - HTTP_ALLOWED=true # uncomment this if accessing it over a non-https connection
    volumes:
      - ./data:/app/data
```

{% endstep %}

{% step %}

### Open Portainer

Go to Stacks > Click on +Add Stacks, then put in the Docker Compose.

<figure><img src="https://2807223923-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTUqAJOgHs57S8lmqdxRV%2Fuploads%2FKrK24qJZvVo8BFWsg41T%2Fimage.png?alt=media&#x26;token=a47ced76-3ee2-4573-a667-9de1d25bef59" alt=""><figcaption></figcaption></figure>

Then, we can click on Deploy the Stack!
{% endstep %}

{% step %}

### Configure Cloudflare Tunnels

Remember, now we need to configure Cloudflare to be able to expose this to the internet, and we can follow the guide from the previous page on [how to add new routes](https://app.gitbook.com/o/DCgnBetC4YnbJAmkVblZ/s/TUqAJOgHs57S8lmqdxRV/~/edit/~/changes/57/hackerschool/hands-on-self-hosting/exposing-to-the-internet#how-to-add-new-routes)! We reccommend you trying it yourself.

<details>

<summary>Instructions</summary>

```bash
sudo vim /etc/cloudflared/config.yml
```

Add the following lines to config.yml (remember to edit the domain name and tld):

```
  - hostname: convert.<domain-name>.<tld>
    service: http://localhost:3000
```

Add the new subdomain record to DNS:

```bash
sudo cloudflared tunnel route dns <TUNNEL-UUID or TUNNEL-NAME> convert.<domain-name>.<tld>
```

Restart and update Cloudflard:

```bash
sudo systemctl restart cloudflared
```

</details>
{% endstep %}

{% step %}

### Congrats, WE'RE DONEEE

{% endstep %}
{% endstepper %}

## A Non-Exhaustive List of Cool Things to Self Host:

Now that you know how to self-host things, it's also good to know where to find other cool things.&#x20;

Of course, you can also just run your own dev projects and expose the port to the internet the same!

### Some cool services we use:

* [Jellyfin](https://github.com/jellyfin/jellyfin): Open-source media server for streaming and managing your movies, shows, music, and photos.
* [Uptime Kuma](https://github.com/louislam/uptime-kuma): Self-hosted uptime monitoring tool with a clean dashboard and alerting support.
* [Shlink](https://github.com/shlinkio/shlink): Self-hosted URL shortener with analytics and API support.
* [Copyparty](https://github.com/9001/copyparty): Lightweight file server for sharing, uploading, and managing files over the web.
* [Beszel](https://github.com/henrygd/beszel): Lightweight server monitoring platform for tracking system stats and health.
* [CodiMD](https://github.com/hackmdio/codimd): Collaborative markdown editor for real-time note-taking and documentation.
* [Grafana](https://github.com/grafana/grafana): Visualization platform for dashboards, metrics, logs, and observability data.
* [Prometheus](https://github.com/prometheus/prometheus): Open-source monitoring and alerting toolkit for collecting time-series metrics.
* [Home Assistant](https://github.com/home-assistant/core): Open-source home automation platform for controlling and automating smart devices.
* [Stirling PDF](https://github.com/Stirling-Tools/Stirling-PDF): Self-hosted PDF toolkit for merging, splitting, converting, and editing PDFs.
* [MeTube](https://github.com/alexta69/metube): Web UI for downloading videos and audio from YouTube and many other sites.
* [TinyAuth](https://github.com/steveiliop56/tinyauth): Lightweight self-hosted authentication service for protecting internal apps.
* [Pocket ID](https://github.com/pocket-id/pocket-id): Simple self-hosted identity provider with passkey support for secure logins.
* [Karakeep](https://github.com/karakeep-app/karakeep): Self-hosted bookmark manager for saving, organizing, and searching links.
* [Forgejo](https://github.com/forgejo/forgejo): Self-hosted lightweight software forge for Git hosting, issues, and collaboration.
* [Immich](https://github.com/immich-app/immich): Self-hosted photo and video backup platform with search and mobile sync.

{% embed url="<https://awesome-selfhosted.net/>" %}

This is based off: <https://github.com/awesome-selfhosted/awesome-selfhosted>

{% embed url="<https://www.reddit.com/r/selfhosted/>" %}
