6.6 KiB
dev diary
2018-03-29
@dinosaur
- setup ButtCloud.org and various linked services (GitHub, Docker Cloud, Twitter, Gmail)
- started
buttcloud/meta
repo to store any meta information (including these dev diary entries) - started `buttcloud/butt-landing to be a simple public landing page for pub servers
- working towards a multi-service pub using Docker Compose, i realized
ssb-viewer
andgit-ssb-web
were non-trivial to install in typical environments - the plan is to use this as a simple secondary service to get a multi-service pub working, then later can focus on the other secondary services
- working towards a multi-service pub using Docker Compose, i realized
2018-03-30
@dinosaur
- made Docker image for
buttcloud/butt-landing
- extracted minimal peer server and client code from
scuttlebot
intobuttcloud/butt-peer
- added custom logging plugin which uses
pino
, to try and have a consistent logging system across services - made two Docker images, one for
butt-peer-server
and one forbutt-peer-client
- i combined them so i could use the client code in the server healthcheck
- added custom logging plugin which uses
2018-04-03
@dinosaur
- started
buttcloud/butt
asdocker-compose.yml
of peer server, landing server, and nginx proxy - update
butt-peer-server
andbutt-peer-client
to not usenode
user, easier to start with defaultroot
user- why? i ran into an error with volume data permissions, would rather punt to later
- UPDATE: changed this back, got it working with
node
user, needed to create volume inDockerfile
then mount external volume at same path
- update
butt-landing
to auto re-connect to sbot, so it doesn't error when sbot is not yet up- why? this is the recommended way to have docker services depend on each other,
docker-compose.yml
v3 not longer supportsdepends_on: condition: healthy
- why? this is the recommended way to have docker services depend on each other,
- setup Docker Hub automated builds to build tagged images based on git version tags
- match tag name:
/^v[0-9.]+$/
, docker tag is same
- match tag name:
2018-04-04
@dinosaur
- got minimal
buttcloud/butt
working! - iron out some kinks...
2018-04-08
@dinosaur
- switch to focus on Docker Swarm
- change to use Traefik instead of Nginx Proxy
2018-04-09
@dinosaur
- keep trying to get the Swarm setup to work, grr...!
2018-04-13
@dinosaur
- take a break from Swarm for meow
- first pass at scaffolding
buttcloud/buttcloud-provider
- have a working web server, browser app, and worker, but not yet complete to start feature development
2018-04-14
@dinosaur
- more progress toward provider app scaffolding
2018-04-15 to 2018-04-17
@dinosaur
provider app has landed!
- integrate
redux-bundler
- add emojis
- found seamless background image to tile on landing page
- start onboarding workflow
- implement start step of onboarding
- validate forms on client
- validate service calls on server, show errors in form
- show success or failure messages as snackbar
- after form submission (which creates the user)
- generate json web token that identifies user
- send welcome email to next page of onboarding with token
- emails are sent by queuing a delayed job to a worker (
node-resque
) - setup decent email templates with
mjml
- emails are sent by queuing a delayed job to a worker (
- store user in local storage in case they refresh page before progressing
- show help text on page
- allow user to resend onboarding email
2018-04-18
back to the infra side, during breakfast this morning i figured out why buttcloud/butt
was failing!
i had a hunch that it had to do with the address that sbot
was binding to. i configured host
as example_butt-peer-server
, since that's how the Docker service was to be identified within the Docker network. but still, the health checker inside the service couldn't find it. i changed this to 0.0.0.0
and it works!
did the same for the landing service. now the stack comes online, you can curl -H "Host: example.butt.nz" localhost
and get the output from the landing page associated with example.butt.nz
(proxied by traefik
).
next i added a custom plugin to butt-peer-server
that allows you to configure externalHost
, in case it differs from host
. this means we can bind to host
(like 0.0.0.0
) but advertise our public multiserver address as example.butt.nz
(like for invites).
then, on a whim from @mischa, i went back to buttcloud-provider
to swap redux-form
for final-form
, easy as.
made up some issues, want to step back to think about the next steps from here.
also made the ButtCloud logo!
2018-04-19
- setup contributor license agreement: https://github.com/buttcloud/meta/issues/6
- setup kanbans
2018-04-26
- start to separate pub and hub stacks in swarm setup:
426deb39b9
- worked on deploy for web app demo: https://github.com/buttcloud/buttcloud-provider/pull/9
- browser code is up at: https://demo.buttcloud.org (using netlify for free)
- api server is up at https://buttcloud-demo.herokuapp.com/ (using heroku for free)
2018-04-27
- discovered and documented bug with
tinyify
: https://github.com/browserify/tinyify/issues/10 - add standard style setup to web app: https://github.com/buttcloud/buttcloud-provider/pull/10
2018-04-30
- demo is now live! demo.buttcloud.org 🐑
- renamed sub-projects to either
buttpub*
orbutthub*
, to standardize language: https://github.com/buttcloud/meta/issues/7 - setup continuous integration for
butthub-provider
: https://github.com/buttcloud/butthub-provider/pull/11 - setup ButtCloud account with OVH
- apply for their startup support program (for maybe $1k cloud credit): https://www.ovh.com/world/dlp/
- play with
docker-machine
to create a local swarm across many machines- get the swarm scripts from
buttpub
working, now across multiple virtual machines
- get the swarm scripts from