2.8 KiB
Setup
Prerequisites
The setup
- Clone this repository:
git clone https://git.maid.zone/stuff/soundcloak
- Go into the cloned repository:
cd soundcloak
- Download hls.js:
npm i
- Download templ:
go install github.com/a-h/templ/cmd/templ@latest
You might need to add go binaries to your PATH (add this line to your .bashrc / .zshrc / whatever)
export PATH=${PATH}:`go env GOPATH`/bin
- Download regexp2cg:
Not really required, but helps speed up some parts of the code that use regular expressions by generating code for them instead of compiling in runtime.
go install github.com/dlclark/regexp2cg@main
- Download soundcloakctl:
Soundcloakctl is helper for soundcloak.
go install git.maid.zone/stuff/soundcloakctl@master
- Download requried JS modules:
soundcloakctl js download
- Build binary:
This uses the build script, which generates code from templates, generates code for regular expiressions, and then builds the binary.
./build
Now, you can run soundcloak with the ./main binary. By default, it is listening on 127.0.0.1:4664. For a configuration guide, refer to here
Updating your local setup
- Retrieve the latest code:
git fetch origin
git pull
- Update dependencies/tools:
go get # for go packages
go install github.com/a-h/templ/cmd/templ@latest # templ cli
go install github.com/dlclark/regexp2cg@main # regexp2 codegen cli. not required unless you've installed it
go install git.maid.zone/stuff/soundcloakctl@master # soundcloakctl
soundcloakctl js download # re-download JS modules
- Clean precompressed static files
Those are created by the webserver in order to more efficiently serve static files. They have the
.fiber.gzextension. You can easily remove them from all directories like this:
find . -name \*.fiber.gz -type f -delete
- Run codegen and build the binary:
./build
Now, you can run soundcloak with the ./main binary.
Contributing
Contributions are appreciated!
We develop soundcloak on our forgejo instance, but feel free to contribute on our Codeberg and Github as well!
If you want to add a new feature that's not in the todo list, please create an issue or discussion first.
If you have updated go dependencies or added new ones, please run go mod tidy before commiting.
Any security vulnerabilities should first be disclosed privately to the maintainer (different ways to contact me are listed here)