My current VPS setup
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
Blog
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
Git server
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.
Links
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
PrivateBin server
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
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