A few months ago I made a post on Proxmox and what I run/ran on my physical home server, and whilst I have now fixed my hardware issues (by geting completely different hardware) I am yet to recreate all my VMs on that machine. So in the meantime, using my GitHub Student credits I have setup a VPS with DigitalOcean.
What I run
My blog (what you are currently reading) is hosted on my droplet using 11ty and Docker. It is essentially the same as what I have done previously except instead of deploying to netlify I have Docker build the site and expose it on my server with this Dockerfile
FROM node:10-alpine3.9 as npmpackages WORKDIR /app COPY package.json . RUN npm install FROM node:10-alpine3.9 as builder WORKDIR /app COPY --from=npmpackages /app /app COPY . . RUN npm run build FROM nginx:1.17.10-alpine RUN rm -r /usr/share/nginx/html/ COPY --from=builder /app/_site/ /usr/share/nginx/html/ EXPOSE 5000
My Git server at https://git.crimsontome.com (as reccomended by a good friend Starbeamrainbowlabs) is created using Gitea. I use it to host most of my private repositories and store backups of some important repos from GtiHub, just in case. I had some issues setting this up in a Docker container so i just run the standalone package.
https://links.crimsontome.com is created from a littlelink container. It is an open-source self-hosted alternative to services like LinkTree. It contains links to most of my public services and is ran through this docker-compose file
version: "3.0" services: littlelink-server: image: ghcr.io/techno-tim/littlelink-server:latest # dockerhub is also supported timothystewart6/littlelink-server # image: timothystewart6/littlelink-server:latest container_name: littlelink-server environment: - META_TITLE=CrimsonTome - META_DESCRIPTION=Linux Sysadmin and FOSS Enthusiast - META_AUTHOR=CrimsonTome - LANG=en - META_INDEX_STATUS=all - OG_SITE_NAME=CrimsonTome - OG_TITLE=CrimsonTome - OG_DESCRIPTION=The home of CrimsonTome - OG_URL=https://crimsontome.com - GA_TRACKING_ID=G-XXXXXXXXXX - THEME=Dark - AVATAR_URL=https://https://avatars.githubusercontent.com/u/64846840?v=4 - AVATAR_2X_URL=https://https://avatars.githubusercontent.com/u/64846840?v=4 - AVATAR_ALT= - NAME=CrimsonTome - BIO=The home of CrimsonTomes links # use ENV variable names for order, listed buttons will be boosted to the top - BUTTON_ORDER=YOUTUBE,TWITCH,TWITTER,GITHUB,INSTAGRAM,DISCORD,FACEBOOK,TIKTOK,PATREON,GEAR,DOCUMENTATION # you can render an unlimited amount of custom buttons by adding # the CUSTOM_BUTTON_* variables and by using a comma as a separator. - CUSTOM_BUTTON_TEXT=Blog,LinkedIn, Git Service, PasteBin Service - CUSTOM_BUTTON_URL=https://blog.crimsontome.com,https://www.linkedin.com/in/matt-clark-aa776b1b4/,https://git.crimsontome.com,https://paste.crimsontome.com - CUSTOM_BUTTON_COLOR=#000000,#000000,#000000,#000000 - CUSTOM_BUTTON_TEXT_COLOR=#ffffff,#ffffff,#ffffff,#ffffff - CUSTOM_BUTTON_ALT_TEXT=My blog,LinkedIn,Gitea,PrivateBin - CUSTOM_BUTTON_NAME=BLOG,LinkedIn,Gitea,PrivateBin - CUSTOM_BUTTON_ICON=fas file-alt,fas file-alt,fas file-alt,fas file-alt - GITHUB=https://github.com/crimsontome - TWITTER=https://twitter.com/ctome427 - YOUTUBE=https://www.youtube.com/channel/UCrxIJeb-FW_rFBQ19LRZSaQ - FOOTER=CrimsonTome © 2022 ports: - 8090:3000 restart: unless-stopped security_opt: - no-new-privileges:true
Nginx Proxy Mangager
Nginx Proxy Manager is a project that 'comes as a pre-built docker image that enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt'
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
You can also use it to lock sites that don't come with their own authenticattion. You can read about how to do that here
Whilst currently not fully functional, https://paste.crimsontome.com hosts my PrivateBin instance. Like most of my services it runs inside a docker container
docker run -d --restart="always" --read-only -p 8080:8080 -v $PWD/privatebin-data:/srv/data privatebin/nginx-fpm-alpine
Dashy can be ran in a docker container, but some plugins do not work whilst Dashy is in one, so I am using npm to build and serve it instead. Once you are done setting up dashy
git clone https://github.com/Lissy93/dashy.git cd dashy # make your changes to public/conf npm run build npm run start
Server metrics with NetData
I use NetData to provide server metrics for my dashboard such as CPU, Memory and disk usage, alognside many others