Favicon of Appwrite

Appwrite

Build applications at any scale with a complete open-source platform. Get auth, database, storage, functions, and hosting to launch your project in minutes.

Appwrite is an all-in-one, open-source backend platform designed to help you build applications faster and scale affordably. It provides the complete infrastructure you need, letting you build like a team of hundreds even if you're a solo developer. Stop worrying about complex backend setup and focus on creating great user experiences with your preferred programming languages and frameworks. The platform includes a comprehensive suite of services, available through a simple API:

  • Authentication: Manage users, teams, and access with multiple OAuth providers.
  • Databases: Store and query your application data with a powerful and flexible NoSQL database.
  • Storage: Handle file uploads, downloads, and previews for your users.
  • Functions: Execute server-side code in a secure and isolated environment.
  • Realtime: Push live data and updates to your client applications.
  • Hosting: Deploy your web and mobile applications with ease.

With a security-first approach and a global network of Points of Presence ensuring low latency, you can safely build and scale your project. Developers have used the platform to reduce development time by 60% and cut infrastructure costs by as much as 700%, making it an ideal choice for passion projects, startups, and enterprise applications.

Directory Structure

appwrite
builds
cache
certificates
config
functions
mariadb
redis
uploads
.env
docker-compose.yml

docker-compose.yml

services:
  traefik:
    image: traefik:2.10
    command:
      - --providers.file.directory=/storage/config
      - --providers.file.watch=true
      - --providers.docker=true
      - --providers.docker.exposedByDefault=false
      - --providers.docker.constraints=Label(`traefik.constraint-label-stack`,`appwrite`)
      - --entrypoints.appwrite_web.address=:80
      - --entrypoints.appwrite_websecure.address=:443
      - --api.dashboard=true
      - --ping=true
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./config:/storage/config:ro
      - ./certificates:/storage/certificates:ro
    depends_on:
      - appwrite
    labels:
      - traefik.enable=true
      - traefik.constraint-label-stack=appwrite

  appwrite:
    image: appwrite/appwrite:1.5.4
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./uploads:/storage/uploads
      - ./cache:/storage/cache
      - ./config:/storage/config
      - ./certificates:/storage/certificates
      - ./functions:/storage/functions
    depends_on:
      - mariadb
      - redis
    labels:
      - traefik.enable=true
      - traefik.constraint-label-stack=appwrite
      - traefik.http.routers.appwrite_web.rule=PathPrefix(`/`)
      - traefik.http.routers.appwrite_web.entrypoints=appwrite_web
      - traefik.http.services.appwrite_web.loadbalancer.server.port=80

  mariadb:
    image: mariadb:10.7
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=${_APP_DB_ROOT_PASS}
      - MYSQL_DATABASE=${_APP_DB_SCHEMA}
      - MYSQL_USER=${_APP_DB_USER}
      - MYSQL_PASSWORD=${_APP_DB_PASS}
    volumes:
      - ./mariadb:/var/lib/mysql
    command: 'mysqld --innodb-flush-method=O_DIRECT --wait_timeout=28800'

  redis:
    image: redis:7.0-alpine
    restart: unless-stopped
    volumes:
      - ./redis:/data

  realtime:
    image: appwrite/appwrite:1.5.4
    command: realtime
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis
    labels:
      - traefik.enable=true
      - traefik.constraint-label-stack=appwrite
      - traefik.http.routers.appwrite_realtime.rule=PathPrefix(`/v1/realtime`)
      - traefik.http.routers.appwrite_realtime.entrypoints=appwrite_web
      - traefik.http.services.appwrite_realtime.loadbalancer.server.port=80

  schedule:
    image: appwrite/appwrite:1.5.4
    command: schedule
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  executor:
    image: appwrite/appwrite:1.5.4
    command: executor
    restart: unless-stopped
    env_file: .env
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./functions:/storage/functions
      - ./builds:/storage/builds
    depends_on:
      - mariadb
      - redis

  worker-audits:
    image: appwrite/appwrite:1.5.4
    command: worker-audits
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-builds:
    image: appwrite/appwrite:1.5.4
    command: worker-builds
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-certificates:
    image: appwrite/appwrite:1.5.4
    command: worker-certificates
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./certificates:/storage/certificates
    depends_on:
      - mariadb
      - redis

  worker-databases:
    image: appwrite/appwrite:1.5.4
    command: worker-databases
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-deletes:
    image: appwrite/appwrite:1.5.4
    command: worker-deletes
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./uploads:/storage/uploads
      - ./cache:/storage/cache
      - ./functions:/storage/functions
      - ./builds:/storage/builds
    depends_on:
      - mariadb
      - redis

  worker-functions:
    image: appwrite/appwrite:1.5.4
    command: worker-functions
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-mails:
    image: appwrite/appwrite:1.5.4
    command: worker-mails
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-messaging:
    image: appwrite/appwrite:1.5.4
    command: worker-messaging
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-migrations:
    image: appwrite/appwrite:1.5.4
    command: worker-migrations
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

  worker-webhooks:
    image: appwrite/appwrite:1.5.4
    command: worker-webhooks
    restart: unless-stopped
    env_file: .env
    depends_on:
      - mariadb
      - redis

.env

_APP_ENV=production
_APP_OPENSSL_KEY_V1=your_super_secret_openssl_key_here_must_be_long
_APP_DOMAIN=localhost
_APP_DOMAIN_TARGET=localhost
_APP_REDIS_HOST=redis
_APP_REDIS_PORT=6379
_APP_DB_HOST=mariadb
_APP_DB_PORT=3306
_APP_DB_SCHEMA=appwrite
_APP_DB_USER=appwrite
_APP_DB_PASS=your_super_secret_db_password
_APP_DB_ROOT_PASS=your_super_secret_db_root_password
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS=admin@example.com
_APP_OPTIONS_ABUSE=enabled
_APP_OPTIONS_FORCE_HTTPS=disabled
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Appwrite

Favicon

 

  
  
Favicon

 

  
  
Favicon