Skip to content
/ meli Public

Platform for deploying static sites and frontend applications easily. Automatic SSL, deploy previews, reverse proxy, and more.

License

Notifications You must be signed in to change notification settings

getmeli/meli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

meli-logo

meli

Open source platform for deploying static sites and frontend applications.

Found a security issue ? Please let us know !

Docs: https://docs.meli.sh

How it works

  1. Sign-in and create your organization
  2. Create a site in your dashboard, say my-site
  3. Upload a release with the meli CLI
  4. Setup my-domain.com to point to my-site.meli.sh

Features

  • Deploy unlimited static sites under a primary domain
  • Unlimited organizations, teams, users and sites
  • Seamless custom domains redirection
  • Automatic HTTPs certificate issuing with letsencrypt (or private ACME server)
  • Primary releases and branch (preview) releases
  • API with fully configurable scopes
  • Webhooks
  • Integrations (Slack, Mattermost, Email)
  • Easily deploy and upgrade with Docker Compose
  • Password protected pages
  • Get deploy URL in pull requests and commit status
  • Increase test coverage
  • API documentation
  • Documentation
  • Build an official project website
  • Create a community discussion branch
  • Deploy a cloud version
  • Translations
  • Extend integrations
  • Accessibility

Development

Start UI

  1. Clone the UI repo.
  2. npm i && npm start
  3. The app is accessible from http://localhost:3001, but we develop from http://localhost:80 (see below)

Start Caddy and the API

  1. Run docker-compose -f ./docker-compose-dev.yml up -d
  2. Configure your .env (copy .env.example to start with)
  3. Run npm start

If you develop with the UI, you'll need to clone the UI repo, then start it.

You can now browse at http://localhost:80:

  • http://localhost:80/ => UI
  • http://localhost:80/api, http://localhost:80/auth and http://localhost:80/socket.io => API
  • http://loopback.sh => your sites will be served here

DNS config

You need to configure your machine to allow wildcard domains for development. We've got a few ways to do this.

Use loopback.sh

We've configured loopback.sh to point to 127.0.0.1, so you can develop with it. Update your .env.

MELI_SITES_URL=loopback.sh

Your sites will be served at *.loopback.sh.

Pros: simple, no config required Cons: you need to be connected to the internet

Using /etc/hosts

Unfortunately, /etc/hosts doesn't support wildcard domains, so you'll need to edit /etc/hosts for every site added to Meli:

127.0.0.1 my-site.test
127.0.0.1 my-channel.my-site.test

Pros: simple, can develop without internet Cons: have to reconfigure every time you add a site

Using dnsmasq

brew install dnsmasq

# tell dsnmasq to point *.test to 127.0.0.1
echo "address=/test/127.0.0.1" > /usr/local/etc/dnsmasq.conf

# start daemon
brew services start dnsmasq

# make OSX point to dnsmasq
sudo mkdir -p /etc/resolver

# tell os x to point *.test to 127.0.0.1
sudo echo "nameserver 127.0.0.1" > /etc/resolver/test

ping hello.test

Your sites will be served at *.test.

Pros: you don't need to be connected to the internet, no need to reconfigure /etc/hosts Cons: a bit complex, config required

SSL

Use mkcert to generate a certificate and key:

brew install mkcert nss
mkcert -install
mkcert loopback.sh

then update your .env with:

MELI_SSL_KEY=localhost-key.pem
MELI_SSL_CERT=localhost.pem

TODO see how to configure Caddy to use these files