Version: 1.0.0.1
Version: 0.4.0.0
I recently set up a private Mastodon server for my family. I'm not a sysadmin, nor do I want to become one; I have relatively little experience managing private servers, but I knew going into this that the simplest path would involve some amount of manually `ssh`ing into servers to tweak config files and restart things. My preference, of course, would be to have a declarative, version-controlled description of how I want my Mastodon instance configured, but I'm not sure how to get started there (NixOps? Terraform? Something else?). Anyway, here's what I did. | |
I started out on the official [Running your own server](https://docs.joinmastodon.org/user/run-your-own/) documentation, which links to a 1-click [Digital Ocean Mastodon Droplet](https://marketplace.digitalocean.com/apps/mastodon). I hadn't heard of Digital Ocean "apps" before, but this option seemed simpler to me than manually setting up a machine with the same suite of software (Mastodon, PostgreSQL, Redis, Sidekiq, Nginx, and maybe a couple others). | |
Disconnected 0 | |
request arrives -> Connecting 0 | |
Connecting 0 | |
Connecting-Connecting | |
connect fails -> Connecting-Connecting | |
connect times out -> Disconnected 0 | |
connect succeeds -> Connecting-Pinging | |
Connecting-Pinging |
#!/usr/bin/env stack | |
{- stack script --resolver lts-12.24 --package sdl2 -} | |
import Control.Concurrent | |
import SDL | |
main :: IO () | |
main = do | |
initialize [InitVideo] | |
window <- createWindow mempty defaultWindow |
let | |
Extension = | |
https://raw.githubusercontent.com/dhall-lang/dhall-to-cabal/1.3.0.0/dhall/types/Extension.dhall | |
sha256:a5451bf19663c919ba35df6ca4e9843fabef1867888feda40f13bb627dfa271c | |
in let | |
extension = | |
constructors Extension | |
in |
sudo: false | |
language: generic | |
cache: | |
directories: | |
- $HOME/.stack | |
addons: | |
apt: | |
packages: |
-- http://strictlypositive.org/CJ.pdf | |
{-# language DeriveFunctor #-} | |
{-# language FlexibleInstances #-} | |
{-# language FunctionalDependencies #-} | |
{-# language LambdaCase #-} | |
{-# language MultiParamTypeClasses #-} | |
{-# language PatternSynonyms #-} | |
{-# language ScopedTypeVariables #-} | |
{-# language TypeOperators #-} |
{-# language DeriveAnyClass #-} | |
{-# language FlexibleContexts #-} | |
{-# language FlexibleInstances #-} | |
{-# language GADTs #-} | |
{-# language LambdaCase #-} | |
{-# language NamedFieldPuns #-} | |
{-# language RankNTypes #-} | |
{-# language ScopedTypeVariables #-} | |
{-# language TupleSections #-} | |
{-# language TypeApplications #-} |
#!/usr/bin/env stack | |
{- stack --resolver lts-9.5 runghc | |
--package clock | |
--package fgl | |
--package random | |
--package reactive-banana | |
--package vty | |
-} | |
{-# language LambdaCase #-} |