2.6 KiB
Setup
Prerequisites
- node.js + npm (any recent enough version should do, it's just used for getting hls.js builds)
- golang (I recommend version 1.22.10. Technically, you need 1.21.4 or higher)
- git
The setup
- Clone this repository:
git clone https://github.com/maid-zone/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
- 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
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
- 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:
npm i # for hls.js
go get # for other 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
- 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!
Development and discussion mainly happens on our GitHub, but feel free to contribute on our Codeberg mirror 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)