> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypost.it/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Install TryPost on your server

# Installation

This guide walks through installing TryPost on a server (bare-metal or VM). For Docker-first setups, see [Docker](/self-hosting/docker).

## Requirements

* PHP 8.2 or higher
* Node.js 20 or higher
* PostgreSQL 14+ or MySQL 8+
* Redis 6+
* Composer 2.x

## Install

### 1. Clone the repository

```bash theme={null}
git clone https://github.com/trypostit/trypost.git
cd trypost
```

### 2. First-time setup (one command)

```bash theme={null}
composer setup
```

This runs `composer install`, copies `.env.example` to `.env`, generates `APP_KEY`, runs `php artisan migrate --force`, installs npm packages, and runs `npm run build`. After it finishes, edit `.env` to point at your real database, Redis, and any social platform credentials — see [Configuration](/self-hosting/configuration).

If you prefer doing each step yourself:

```bash theme={null}
composer install
cp .env.example .env
php artisan key:generate
# edit .env now
php artisan migrate
npm install
npm run build
```

### 3. Seed default data and create the admin user

Self-hosted installs default to `SELF_HOSTED=true`, which closes `/register` to the public — your instance only exists for you and the people you invite.

On a fresh database, run this once:

```bash theme={null}
php artisan migrate:fresh --seed && php artisan db:seed --class=UserSeeder
```

This rebuilds the schema, runs the default `DatabaseSeeder` (which provisions the **Laravel Passport Personal Access Client** required to issue API tokens, plus the plan rows), and then creates the admin user.

<Warning>
  `migrate:fresh` **drops every table**. Only run it on a brand-new database during initial install. If you already have data, run `php artisan db:seed && php artisan db:seed --class=UserSeeder` instead — both seeders are idempotent.
</Warning>

The admin account ships with fixed credentials — **change the password immediately on first login**:

| Field    | Value              |
| -------- | ------------------ |
| Email    | `admin@trypost.it` |
| Password | `password`         |

After this, every other account on the instance comes from a workspace invite (Settings → Members) — invitees get a link that lets them sign up even though open registration stays off.

### 4. Run all dev processes in one terminal

```bash theme={null}
composer dev
```

This concurrently starts:

* `php artisan serve` — HTTP server on `http://localhost:8000`
* `php artisan queue:listen` — queue worker
* `php artisan pail` — live log tail
* `npm run dev` — Vite with hot reload

For Inertia SSR development, use `composer dev:ssr` instead.

### 5. Production process supervisors

For production you don't use `composer dev`. Configure separate supervisor entries for the web server (PHP-FPM / Octane), Horizon (queues), Reverb (WebSockets), and the cron job for `php artisan schedule:run` — see [Production setup](/self-hosting/production).

## Verify the install

Visit `http://localhost:8000` (or your configured `APP_URL`) and sign in with the admin credentials you set in step 3. You'll land in the dashboard.

## Next Steps

* [Configure your environment](/self-hosting/configuration)
* [Connect your first social account](/platforms/overview)
* [Production deployment](/self-hosting/production)
