Follow this guide to install Azimutt, the all-in-one app to explore and understand your database.
Azimutt is a web application written with Elixir/Phoenix for the backend and Elm/TypeScript for the frontend.
It's backed by a PostgreSQL database and a file storage with a S3 API.
It also needs an email service for account validation, password reset and organization invitation, we currently support smtp
, gmail
and mailgun
providers, but we could add more if you need.
There is also a Node.js server, the gateway, to proxy calls to your databases. You can install it on your infrastructure or let users call it from Azimutt CLI.
Make sure you have Docker installed on your local machine, refer to the official Docker documentation to install it if needed.
Disclaimer: our pre-build image is made for Linux environment. If you need Mac or Windows, please reach out.
Pull the Docker image from the registry:
docker pull ghcr.io/azimuttapp/azimutt:main
Now, we'll need to run the container using the image we've just pulled.
But just before, you need to configure environment variables and give them to your Docker container. For that you can use the --env-file
option with a the .env.example
file set up with your configuration.
docker run -d --name azimutt \
--env-file <path_to_your_env_file> \
-p 4000:4000 \
ghcr.io/azimuttapp/azimutt:main
The Azimutt application should now be running on http://localhost:4000
.
Make sure you have Docker installed on your local machine, refer to the official Docker documentation to install it if needed.
Disclaimer: our Docker image is made for Linux environment. If you need Mac or Windows, please reach out.
Clone the Azimutt repository on your local machine:
git clone [email protected]:azimuttapp/azimutt.git
Define your environment variables, you can copy the .env.exemple
to .env
and edit it with your values:
cp .env.example .env
On linux and Windows remove the export
in front of the variables in the file.
docker build -t azimutt:latest .
Now, we'll need to run the container using the image we've just built.
We'll use the --env-file
option to supply your environment variables to the container:
docker run -d --name azimutt \
--env-file <path_to_your_env_file> \
-p 4000:4000 \
azimutt:latest
The Azimutt application should now be running on http://localhost:4000
.
TODO
But in short you will have to install Elixir & Elm on your machine and launch the backend. Contact us if you need it, we will write this guide on demand 😉
Here is the full list of environment variables you can use to set up Azimutt application.
These are the basic variables you will need to set up Azimutt:
PHX_SERVER
(optional): iftrue
, start the Phoenix server in server modePHX_PROTOCOL
(optional, values:ipv6
oripv4
, default:ipv6
): ifipv4
, the Phoenix server will listen to IPv4, otherwise IPv6PHX_HOST
(required): host of the deployed website (ex:localhost
orazimutt.app
), it's used to build absolute urlsPORT
(required): the port the server will listen to (ex:4000
)SECRET_KEY_BASE
(required): the secret used for server encryption (cookies and others), should be at least 64 bytes and you probably want a random value for itLICENCE_KEY
(optional): the licence key to unlock paid features, contact us if you need one ([email protected])DATABASE_URL
(required): the whole url to connect to your PostgreSQL database (ex:postgresql://<user>:<pass>@<host>:<port>/<database>
)DATABASE_IPV6
(optional): iftrue
, the database driver will use IPV6DATABASE_POOL_SIZE
(optional, default:10
): the database connection pool sizeDATABASE_ENABLE_SSL
(optional): iftrue
, the database driver will require SSL
FILE_STORAGE_ADAPTER
(required, values:local
ors3
): file storage is used to store project json files- if
s3
S3_BUCKET
(required): the bucket used to store project jsonS3_HOST
(optional): the s3 host (if you don't use s3 profiles)S3_KEY_ID
&S3_KEY_SECRET
(optional): credentials to connect to the s3 (if you don't use s3 profiles)S3_FOLDER
(optional): if you want to store Azimutt files in a specific folder inside your bucketS3_REGION
(optional, default:eu-west-1
): to specify your AWS region
- if
local
mount a volume or path of/app/bin/uploads
to back up JSON objects of created schemas
- if
EMAIL_ADAPTER
(optional, values:mailgun
,gmail
orsmtp
): the service to use to send emails (email confirmation, password reset & organization invitations), contact us of you need another integration- if
mailgun
MAILGUN_DOMAIN
(required)MAILGUN_API_KEY
(required)MAILGUN_BASE_URL
(required)
- if
gmail
GMAIL_ACCESS_TOKEN
(required)
- if
smtp
SMTP_RELAY
(required)SMTP_USERNAME
(required)SMTP_PASSWORD
(required)SMTP_PORT
(required)
- if
SENDER_EMAIL
(optional, default[email protected]
): email Azimutt will us to send emailsCONTACT_EMAIL
(optional, default[email protected]
): email shown in Azimutt to reach outSUPPORT_EMAIL
(optional, default[email protected]
): email shown in Azimutt when users need supportENTERPRISE_SUPPORT_EMAIL
(optional, default[email protected]
): email shown in Azimutt for high priority support
At least one of authentication methods should be defined:
AUTH_PASSWORD
(optional): iftrue
, enable email/password authenticationAUTH_GITHUB
(optional): iftrue
, enable GitHub ssoGITHUB_CLIENT_ID
(required)GITHUB_CLIENT_SECRET
(required)
GATEWAY_URL
(optional): if you deployed the gateway, the url where it can be reached outSKIP_ONBOARDING_FUNNEL
(optional): iftrue
, users will not go through the onboarding funnel on account creationSKIP_EMAIL_CONFIRMATION
(optional): iftrue
, users will not be asked to confirm their email (either blocked or soft)REQUIRE_EMAIL_CONFIRMATION
(optional): iftrue
, users will not be allowed to use Azimutt until they confirm their email, otherwise they will have a soft confirmation bannerREQUIRE_EMAIL_ENDS_WITH
(optional): force all users to use an email ending with a suffix, your domain name for exampleORGANIZATION_DEFAULT_PLAN
(optional, values:free
,solo
,team
,enterprise
orpro
): define the plan an organization has by default when createdGLOBAL_ORGANIZATION
(optional): an organization id, if set, all new users will be added to this organizationGLOBAL_ORGANIZATION_ALONE
(optional): iftrue
, only the global organization is shown (allows to work like a mono-tenant app)
RECAPTCHA
(optional): iftrue
, add reCAPTCHA on register and loginRECAPTCHA_SITE_KEY
(required): your site key (frontend)RECAPTCHA_SECRET_KEY
(required): your secret key (backend)RECAPTCHA_MIN_SCORE
(optional): between 0.0 and 1.0
SENTRY
(optional): iftrue
, add Sentry integrationSENTRY_BACKEND_DSN
(optional): your Sentry DSN (ex:https://[email protected]/6050617
)SENTRY_FRONTEND_DSN
(optional): your Sentry DSN (ex:https://[email protected]/8470350
)
TWITTER
(optional): iftrue
, allow to use Twitter API to fetch tweets & unlock features (change table color)TWITTER_CONSUMER_KEY
(required)TWITTER_CONSUMER_SECRET
(required)TWITTER_ACCESS_TOKEN
(required)TWITTER_ACCESS_SECRET
(required)
PUBLIC_SITE
(optional): iftrue
, will show the public site, otherwise home will redirect to login page (you probably don't want it)GITHUB
(optional): iftrue
, allow to use GitHub API, no real usage for nowGITHUB_ACCESS_TOKEN
(required)
POSTHOG
(optional): iftrue
, enable PostHog integrationPOSTHOG_HOST
(required)POSTHOG_KEY
(required)
BENTO
(optional): iftrue
, forward events to BentoBENTO_SITE_KEY
(required)BENTO_PUBLISHABLE_KEY
(required)BENTO_SECRET_KEY
(required)
STRIPE
(optional): iftrue
, allow to purchase plans with Stripe, you probably don't need it ^^STRIPE_API_KEY
(required): Stripe api key (ex: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
)STRIPE_WEBHOOK_SIGNING_SECRET
(required): Stripe webhook secret (ex:whsec_ayZAyKqOLy34UKNeI3eq4icXVWJam0IW
)STRIPE_PRICE_SOLO_MONTHLY
(required): Stripe price for the monthly solo plan (ex:price_uJINukB78aAbajUQHy6Ra523
)STRIPE_PRICE_SOLO_YEARLY
(required): Stripe price for the yearly solo plan (ex:price_uJINukB78aAbajUQHy6Ra523
)STRIPE_PRICE_TEAM_MONTHLY
(required): Stripe price for the monthly team plan (ex:price_uJINukB78aAbajUQHy6Ra523
)STRIPE_PRICE_TEAM_YEARLY
(required): Stripe price for the yearly team plan (ex:price_uJINukB78aAbajUQHy6Ra523
)STRIPE_PRODUCT_ENTERPRISE
(required): Stripe product for enterprise plan (ex:prod_eBlQLUZPVprdAo
)STRIPE_PRICE_PRO_MONTHLY
(required): Stripe price for the monthly legacy pro plan (ex:price_uJINukB78aAbajUQHy6Ra523
)
CLEVER_CLOUD
(optional): iftrue
, enable auth & hooks for Clever Cloud Add-onCLEVER_CLOUD_ADDON_ID
(required)CLEVER_CLOUD_PASSWORD
(required)CLEVER_CLOUD_SSO_SALT
(required)
HEROKU
(optional): iftrue
, enable auth & hooks for Heroku Add-onHEROKU_ADDON_ID
(required)HEROKU_PASSWORD
(required)HEROKU_SSO_SALT
(required)
HUBSPOT
(optional): iftrue
, enable HubSpot integrationHUBSPOT_ID
(required): your HubSpot tracking code id (ex:483274933
)
Never share your secrets or keys in public spaces.