Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Linux
See what sticks
Fresh setup, read just now
Will it work on Linux?
Heads-upIt also needs 206 settings in .env (79 secret).
The maintainers included bin/setup. Open it to see how it's meant to be run: bin/setup on GitHub.
Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
git clone https://github.com/antiwork/gumroad.git cd gumroad
Node.js 22.23.4, Ruby 3.4.12, make
# needs nvm: https://github.com/nvm-sh/nvm nvm install 22 # needs rbenv: https://github.com/rbenv/rbenv#installation rbenv install --skip-existing sudo apt install make
Fill in secrets: DATABASE_PASSWORD, DATABASE_REPLICA2_PASSWORD, DATABASE_WORKER_REPLICA1_PASSWORD, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, CLOUDFRONT_KEYPAIR_ID, CLOUDFRONT_PRIVATE_KEY, S3_SITEMAP_UPLOADER_ACCESS_KEY
cp .env.production.example .env
npm ci bundle install
bin/rails db:prepare
bin/dev
npm test bin/rails test
💡 If you're on Windows, follow our Windows setup guide instead.
Before you begin, ensure you have the following installed:
We use Docker to setup the services for development environment.
sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
Install a local version of MySQL 8.4.x to match the version running in production.
The local version of MySQL is a dependency of the Ruby mysql2 gem. You do not need to start an instance of the MySQL service locally. The app will connect to a MySQL instance running in the Docker container.
brew install mysql@8.4 percona-toolkit
brew link --force mysql@8.4
# to use Homebrew's `openssl`:
brew install openssl
bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)"
# ensure MySQL is not running as a service
brew services stop mysql@8.4
apt install libmysqlclient-devWe use imagemagick for preview editing.
brew install imagemagicksudo apt-get install imagemagickWe use ffprobe that comes with FFmpeg package to fetch metadata from video files.
brew install ffmpegsudo apt-get install ffmpegWe use pdftk to stamp PDF files with the Gumroad logo and the buyers' emails.
sudo apt-get install pdftkWhile generating invoices, to convert HTML to PDF, PDFKit expects wkhtmltopdf to be installed on your system. Download and install the version 0.12.6 for your platform.
We use Bundler to install Ruby gems.
gem install bundler
Install gems:
bundle install
Also make sure to install dotenv as it is required for some console commands:
gem install dotenv
Make sure the correct version of npm is enabled:
corepack enable
Install dependencies:
npm install
App can be booted without any custom credentials. But if you would like to use services that require custom credentials (e.g. S3, Stripe, Resend, etc.), you can copy the .env.example file to .env and fill in the values.
If you installed Docker Desktop (on a Mac or Windows machine), you can run the following command to start the Docker services:
make local
If you are on Linux, or installed Docker via a package manager on a mac, you may need superuser access to expose container ports. To do that, use sudo make local instead.
This command will not terminate. You run this in one tab and start the application in another tab.
If you want to run Docker services in the background, use LOCAL_DETACHED=true make local instead.
bin/rails db:prepare
For Linux (Debian / Ubuntu) you might need the following:
apt install libxslt-dev libxml2-devbin/dev
This starts the Rails server, the JavaScript build system, and a Sidekiq worker.
You can now access the application at http://localhost:3000. Seller subdomains and the asset/api hosts use *.localhost (e.g. http://seller.localhost:3000, http://api.localhost:3000) — modern browsers auto-resolve these to 127.0.0.1, so no /etc/hosts edits are needed.
*.localhost over HTTP is treated as a secure context by browsers (so Stripe.js, Stripe Elements, and other secure-context APIs work), but a couple of features that need either HTTPS or a registrable cookie domain don't work in this setup:
…
No reports for Linux yet.
GitManual AI Agent reads the 15 key files and writes a step-by-step guide for Linux. Once written, it's saved for everyone.