# Quickstart
URL: https://synquic.tech/docs/getting-started/quickstart.md

The fastest path from a fresh server to a live app. Install Synq with your license key, sign in to the panel, and deploy one thing.

import { Step, Steps } from 'fumadocs-ui/components/steps';

This page gets you from an empty server to a live app in four short steps. Think of Synq as a kitchen that
runs on your own server: you set it up once, open the door, hand it your code, and it cooks and serves the
meal. No config files to write.

<Callout title="What you need">
- A Linux server on x86_64 or arm64 (Ubuntu 22.04 or newer, or Debian 12 or newer) with 2 GB of RAM or more, and
  ports 80 and 443 open.
- A license key: email p@synquic.com to get one.
- Optional: a domain for the panel, with a DNS `A` record pointing at the server's IP.
- Some code you want to put online: a GitHub repo, or a folder on your disk.
</Callout>

<Steps>

<Step>

### Install Synq on your server

Log in to the server and run the installer with your license key. It installs Docker if needed, asks for the admin
account, and starts Synq.

<InstallTabs />

The panel comes up on the address the installer prints: `https://<your domain>` with `--domain`, else
`http://<server IP>:3001` (open port 3001 in the firewall for that). You can give the panel a domain later with
`sudo synq panel-domain`. Details in [Installation](/docs/getting-started/installation).

</Step>

<Step>

### Sign in to the panel

Open the panel in your browser and **sign in with the admin account** you set up: the email and password the
installer asked for. There is no sign-up page on your own server: everyone else joins by invitation (see
[Teams and members](/docs/guides/teams-members)).

<Callout title="Can't get in?" type="info">
Forgot the password, or lost your two-factor codes? Open a shell on the server and run
`sudo synq reset-admin-password`. It resets the owner's password, turns two-factor authentication off and signs the
owner out everywhere.
</Callout>

</Step>

<Step>

### Deploy one thing

In the dashboard, start a new project and point it at your code: a GitHub repository or a folder on your
disk. Synq looks at your code, figures out what kind of app it is, and shows you a summary. For most
apps you don't change anything: just press **Deploy**.

You land on the build screen, which streams the logs live, like watching the oven through the glass door.
When it finishes, you get a link. Click it, and your app is online.

</Step>

<Step>

### Give it a domain

Add a custom domain you own, or pick a free subdomain of your apps domain. Synq routes it and requests the HTTPS
certificate for you. See [Custom domains](/docs/guides/custom-domains) and
[your apps' domains](/docs/getting-started/installation#your-apps-domains).

</Step>

</Steps>

## CLI

You can deploy without leaving the shell. The CLI talks to your panel's API, so first sign it in to your
instance with a personal access token (see [CLI access](/docs/cli/access)). Then create a project in the
dashboard and, from your code folder:

```bash
cd your-project
synq init         # pick which project this folder belongs to
synq deploy       # build it and put it online
```

`synq init` writes a small `.synq/project.json` file so later commands know which project to act
on. Add `--watch` to `synq deploy` to follow the build logs until it's done.

## Troubleshooting

<Callout title="The panel doesn't load over HTTPS" type="warn">
Check that the panel's DNS record points at the server and that ports 80 and 443 are open: Let's Encrypt needs to
reach the server to issue the certificate, and Synq keeps retrying in the background. `sudo synq doctor` on the
server reports what is wrong.
</Callout>

<Callout title="The build failed" type="error">
Open the build screen and read the last few red lines: that's the real reason. First-time failures are
usually a missing build command, a missing environment variable, or the app listening on the wrong port.
</Callout>

## Related guides

<Cards>
  <Card title="Installation" href="/docs/getting-started/installation" description="Requirements, domains, license terms, updates and removal." />
  <Card title="First deployment" href="/docs/getting-started/first-deployment" description="A deeper walkthrough: deploy from Git, custom domains, env vars, previews, and rollbacks." />
  <Card title="Deploy from GitHub" href="/docs/guides/deploy-from-github" description="Connect a repo and turn on auto-deploy so every push ships automatically." />
</Cards>
