For running script local
go mod download
go run main.go
For first building and deploying to server
GOOS=linux GOARCH=amd64 go build -o radiorecorder
export SERVER_PATH="server_username@server_ip"
cat ~/.ssh/id_rsa.pub | ssh $SERVER_PATH 'cat >> ~/.ssh/authorized_keys'
# insert server password
ssh $SERVER_PATH mkdir -p /home/records
scp radiorecorder $SERVER_PATH:/home/records/radiorecorder
scp .env $SERVER_PATH:/home/records/.env # in .env keep security variables (for example SENTRY_DSN)
ssh $SERVER_PATH kill $(ps aux | grep recorder | awk '{print $2}')
ssh $SERVER_PATH cd /home/records && nohup ./radiorecorder &
For downloading all records from server
scp "$SERVER_PATH:/home/records/*.mp3" .
Setup supervisor
ssh $SERVER_PATH apt-get install supervisor -y
cat infra/supervisor.conf | ssh $SERVER_PATH 'cat > /etc/supervisor/conf.d/radiorecorder.conf'
ssh $SERVER_PATH supervisorctl reread \
&& ssh $SERVER_PATH supervisorctl update \
&& ssh $SERVER_PATH supervisorctl restart radiorecorder
Redeploy with supervisor
GOOS=linux GOARCH=amd64 go build -o radiorecorder \
&& ssh $SERVER_PATH rm /home/records/radiorecorder \
&& scp radiorecorder $SERVER_PATH:/home/records/radiorecorder \
&& ssh $SERVER_PATH supervisorctl restart radiorecorder