# sudoscientist ## sudoscientist blog ### Setup Install steps are for Debian 11 (bullseye) 1. Install docker-ce ``` # stolen from https://docs.docker.com/install/linux/docker-ce/debian/ sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - # verify the key's fingerprint # ---------- sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 Docker Release (CE deb) sub 4096R/F273FCD8 2017-02-22 # ---------- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 2. Install golang ``` sudo apt-get update sudo apt-get install golang # set the gopath manually for the rest of the setup export GOPATH=${HOME}/go ``` 3. Install migrate ``` # this assumes you have ${GOPATH}/bin in your ${PATH} go get -u -d github.com/mattes/migrate/cli github.com/lib/pq go build -tags 'postgres' -o ${GOPATH}/bin/migrate github.com/mattes/migrate/cli ``` 4. Clone repo and configure the settings ``` mkdir -p ${GOPATH}/src/git.minhas.io/asara cd ${GOPATH}/src/git.minhas.io/asara git clone https://git.minhas.io/asara/sudoscientist-go-backend # iterate through the environment files in the settings directory and set them appropriately # make sure the extension is .env (db.env, secrets.env, website.env... etc.) ``` 5. Configure docker postgres for testing ``` # make sure your user is in the docker group sudo usermod -aG docker $(whoami) # make sure you have some postgres client installed sudo apt-get install postgres-client docker pull postgres docker run -e POSTGRES_PASSWORD=${DB_ADMIN_PW} --name sudosci-db -d postgres # Initalize the postgres DB cd ${GOPATH}/src/git.minhas.io/asara/sudoscientist for i in settings/*; do source $i; done export DB_HOST=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" sudosci-db) psql -d postgres -U postgres -h ${DB_HOST} << EOF CREATE DATABASE ${DB_NAME}; CREATE USER ${DB_USER} WITH ENCRYPTED PASSWORD '${DB_PW}'; GRANT ALL PRIVILEGES ON DATABASE ${DB_NAME} TO ${DB_USER}; ALTER DATABASE ${DB_NAME} OWNER TO ${DB_USER}; EOF ``` 6. Run the application! ``` PLEASE NOTE, THERE ARE DEFAULT TEST VALUES FOR A POSTAL SERVER PLEASE REMOVE THESE IF YOU DONT HAVE A POSTAL BACKEND TO TEST FROM! ``` [For more information on Postal](https://github.com/postalhq/postal) ``` cd ${GOPATH}/src/git.minhas.io/asara/sudoscientist-go-backend for i in settings/*.env; do source $i; done export DB_HOST=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" sudosci-db) PSQL_QUERY_STRING="postgres://${DB_USER}:${DB_PW}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=${DB_SSL}" migrate -path migrations/ -database ${PSQL_QUERY_STRING} up go get go run main.go ```