# Documentation ## Documentation Sets - [Spin Pro Documentation](https://getspin.pro/llms-full.txt): Complete documentation for Spin Pro - the Docker starter kit for Laravel ## Landing - [](https://getspin.pro/raw/index.md): Effortlessly set up and manage Laravel environments across any host and operating system. Enjoy consistent development experiences with our all-in-one, open-source powered Docker solution. ## Docs - [Activate your access](https://getspin.pro/raw/docs/installation/activate-your-access.md): The Spin Pro template is a premium template that requires a license key to access. Follow the instructions below to get access to the easiest way to create and deploy Laravel applications. - [Install to macOS](https://getspin.pro/raw/docs/installation/install-macos.md): Spin easily runs on any macOS machine that runs Docker Desktop. Getting started is as simple as installing Docker Desktop, then running a single command to install `spin`. - [Install to Windows](https://getspin.pro/raw/docs/installation/install-windows.md): Spin is able to run on any Windows machine that supports Windows Subsystem Linux v2 (WLS2). This is a feature developed by Microsoft that allows you to run a Linux distribution on your Windows machine. It is supported in updated versions of Windows 10 and Windows 11. - [Install to Linux](https://getspin.pro/raw/docs/installation/install-linux.md): Spin is able to run on any Linux machine that supports Docker. Getting started is as simple as installing Docker, then running a single command to install `spin`. - [Install via Composer](https://getspin.pro/raw/docs/installation/install-composer.md): Spin can be installed using Composer, a popular PHP package manager. This enables you to make Spin accessible without other developers doing any steps on their end. - [Install via NPM/Yarn](https://getspin.pro/raw/docs/installation/install-npm-yarn.md): Spin can be installed using NPM or Yarn, two popular JavaScript package managers. This enables you to make Spin accessible without other developers doing any steps on their end. - [base64](https://getspin.pro/raw/docs/command-reference/base64.md): Encode and decode strings with base64. - [build](https://getspin.pro/raw/docs/command-reference/build.md): Trigger a build of your docker-compose files. - [configure](https://getspin.pro/raw/docs/command-reference/configure.md): Configure various aspects of your project's deployment settings and infrastructure. - [debug](https://getspin.pro/raw/docs/command-reference/debug.md): If you run into an issue with `spin` and need to report a bug, this is a very helpful command that is used to tell the development team a little more about your environment and how you have `spin` configured. - [deploy](https://getspin.pro/raw/docs/command-reference/deploy.md): Quickly and easily deploy your application to a server without the hassle of setting up CI/CD pipelines. Before running this command, make sure you have everything configured and a supported server online with any host of your choice. - [down](https://getspin.pro/raw/docs/command-reference/down.md): Stops containers and removes containers, networks, volumes, and images created by up. - [exec](https://getspin.pro/raw/docs/command-reference/exec.md): Use `exec` if you want to run a command in **currently running** containers. - [gh](https://getspin.pro/raw/docs/command-reference/gh.md): Run the GitHub CLI via Docker with Spin. - [help](https://getspin.pro/raw/docs/command-reference/help.md): Get a convenient link to open the documentation for `spin`. - [init](https://getspin.pro/raw/docs/command-reference/init.md): Initialize Spin on an existing project. This process will create all the files you need to get started with Spin. - [kill](https://getspin.pro/raw/docs/command-reference/kill.md): Send `SIGKILL` to all containers. See the documentation on docker kill for more advanced usage. - [latest](https://getspin.pro/raw/docs/command-reference/latest.md): Run a one-off container to perform a task with the latest version of the container type you specify. This is great when you need to run composer or npm commands outside of a project directory. - [logs](https://getspin.pro/raw/docs/command-reference/logs.md): View the logs of your docker project. Helpful if you need to go back in time on your own machine. - [maintain](https://getspin.pro/raw/docs/command-reference/maintain.md): Apply updates to your inventory of servers. - [mkpasswd](https://getspin.pro/raw/docs/command-reference/mkpasswd.md): Generate a password hash using the mkpasswd utility. - [new](https://getspin.pro/raw/docs/command-reference/new.md): Create and initialize a new project with Spin. - [provision](https://getspin.pro/raw/docs/command-reference/provision.md): Provision and set up your inventory of servers. Before running this command, make sure you have everything configured and a supported server online with any host of your choice. - [prune](https://getspin.pro/raw/docs/command-reference/prune.md): Clear the local Docker and Spin caches on your machine. - [ps](https://getspin.pro/raw/docs/command-reference/ps.md): Lists containers for a Compose project, with current status and exposed ports. - [pull](https://getspin.pro/raw/docs/command-reference/pull.md): Trigger a pull of your Docker Compose images. - [run](https://getspin.pro/raw/docs/command-reference/run.md): Use `run` if you want to run a command with NEW containers. This is helpful for package installers, etc. This command does require a Docker Compose file to run. If you're looking for a command that you can run in any directory, check out `spin latest`. - [stop](https://getspin.pro/raw/docs/command-reference/stop.md): Send a `SIGTERM` to **all containers**, then after a grace period, send `SIGKILL`. Read more on the official docker stop documentation. - [up](https://getspin.pro/raw/docs/command-reference/up.md): Bring up all containers defined in `docker-compose.yml` and `docker-compose.$SPIN_ENV.yml` (`$SPIN_ENV` defaults to `dev`). - [update](https://getspin.pro/raw/docs/command-reference/update.md): Update `spin` to the latest version (on system/user installs only). - [vault](https://getspin.pro/raw/docs/command-reference/vault.md): Encrypt & decrypt files with "Ansible Vault". Accepts any command that `ansible-vault` accepts. - [version](https://getspin.pro/raw/docs/command-reference/version.md): Print the version of `spin` that you are running. Similar to `spin debug`, but with less output. - [Applying Updates](https://getspin.pro/raw/docs/support/applying-updates.md): When you purchase the Laravel template for Spin Pro, you receive lifetime updates for the template. This means you get all the new features, bug fixes, and improvements we make to Spin Pro. - [Getting Help](https://getspin.pro/raw/docs/support/getting-help.md): If you need help with Spin Pro, we include private community support with your purchase where you can find other Spin Pro users. - [License Agreement](https://getspin.pro/raw/docs/support/license.md): 521 Dimensions LLC (DBA Server Side Up) grants you an ongoing, non-exclusive license to use the Docker templates (the "Templates"). The license grants permission to use the Templates as specified in the type of license you have purchased (Personal or Team). By purchasing a license, you agree to the terms outlined in this document. - [Terms and Conditions](https://getspin.pro/raw/docs/support/terms-and-conditions.md): Understand the Terms and Conditions when you use our services. - [How Spin Works](https://getspin.pro/raw/docs/getting-started/how-spin-works.md): Spin is a collection of proven open source technologies delivered to you in a lightweight and simple experience. This document explains what technologies Spin uses, how it works, and how this tool can enable you to have a lot of power and freedom to self-host and distribute your applications - [Create a new project](https://getspin.pro/raw/docs/getting-started/create-a-new-project.md): Once you have Docker and Spin installed, you can create a new project with a simple command. - [Add to an existing project](https://getspin.pro/raw/docs/getting-started/add-to-an-existing-project.md): Spin Pro can quickly be added to an existing project. Follow the steps below to get started. - [Starting Up Your Development Environment](https://getspin.pro/raw/docs/development-environment/starting-up-your-development-environment.md): Spin uses Docker Compose to start up your development environment in a single command. This allows you to exactly replicate your production environment for local development. - [Running Commands in Development](https://getspin.pro/raw/docs/development-environment/running-commands-in-development.md) - [Server Requirements](https://getspin.pro/raw/docs/server-configuration/server-requirements.md): Spin gives you the power to choose any host that you want. Although the responsibility is on your shoulders to get a server set up, Spin makes it very easy to get this accomplished. - [Server Configuration Basics](https://getspin.pro/raw/docs/server-configuration/server-configuration-basics.md): Spin ensures your application can be 100% replicated from development to production without any vendor lock-in. Spin also gives you the flexibility to choose if you want Spin to manage your servers or not. - [.spin.yml Usage](https://getspin.pro/raw/docs/server-configuration/spin-yml-usage.md): The `.spin.yml` file is the main configuration file for using servers with Spin. It is used to configure your users, providers, servers, hardware profiles, environments, and more. - [DigitalOcean](https://getspin.pro/raw/docs/providers/digitalocean.md): DigitalOcean is one of the most popular cloud VPS providers in the development community. Many tools and services are built to support it. - [Hetzner](https://getspin.pro/raw/docs/providers/hetzner.md): Hetzner is a German-based company with data centers in the EU and the US. Their pricing is very competitive and they have incredible performance. - [Vultr](https://getspin.pro/raw/docs/providers/vultr.md): Vultr is a US-based company that has a great reputation for performance and value. They have a wide range of data centers around the world and a great API for automation. - [Use Any Host](https://getspin.pro/raw/docs/providers/use-any-host.md): Spin is designed to work self-hosting first, which makes it compatible with almost any host. This includes running servers on a major cloud provider down to an old computer running in your grandmother's basement 🤠. Check our server requirements for more details. - [Choosing a Deployment Strategy](https://getspin.pro/raw/docs/deployment/choosing-a-deployment-strategy.md): Spin supports automated deployments and very simple deployments from your local machine. You can choose between these two strategies depending on your needs. - [Preparing an .env. file](https://getspin.pro/raw/docs/deployment/preparing-env-file.md): Preparing an `.env.` file is a crucial step in deploying your application. This file contains environment variables that are used by your application, specific to the environment you are deploying to. - [Automating Deployments with GitHub Actions](https://getspin.pro/raw/docs/deployment/automated-deployments-with-github-actions.md): This guide will walk you through how to automate your deployments with GitHub Actions. This is useful for deploying your application to your servers when you push to your repository. - [Using "spin deploy"](https://getspin.pro/raw/docs/deployment/using-spin-deploy.md): The `spin deploy` command is the easiest way to deploy your application without downtime while avoiding the complexities of learning CI/CD or GitHub Actions. - [Connecting to Your Server](https://getspin.pro/raw/docs/server-access/connecting-to-your-server.md): Spin eliminates the headache of understanding the intricacies of configuring a secure SSH connection. After you provision your server, connecting and managing your server is a breeze. - [Troubleshooting Your Application](https://getspin.pro/raw/docs/server-access/troubleshooting-your-application.md): If you're reading this document, it probably means you're quite frustrated and looking for answers. In this guide, we'll give you some common troubleshooting tips and help you get back on track. - [Updating Your Server](https://getspin.pro/raw/docs/server-access/updating-your-server.md): Keeping your server up to date is important for security and performance. Spin makes it stupid-easy to update your server. - [Generating a Secure SSH Key](https://getspin.pro/raw/docs/advanced/generating-a-secure-ssh-key.md): Having a secure SSH key is super important. This allows us to authenticate to our servers using keys instead of insecure methods such as passwords. - [Configuring DNS records for your app](https://getspin.pro/raw/docs/advanced/configure-dns-records-for-your-app.md): One of the most foundational parts of the Internet is using the Domain Name System (DNS) to map domain names to IP addresses. This allows you to use human-readable domain names like `example.com` instead of remembering IP addresses. This guide will show you how to configure DNS records for your app. - [Configuring your hosts file](https://getspin.pro/raw/docs/advanced/configuring-your-hosts-file.md): In order for your local development environment to work correctly, you'll need to configure your hosts file. This file tells your computer where to look for specific domain names. This is important for local development because you'll be using domain names like `laravel.dev.test` instead of `localhost`. - [Connecting to your database](https://getspin.pro/raw/docs/advanced/connecting-to-your-database.md): Connecting to your database with a GUI manager like TablePlus or Sequel Ace is a must for many developers. This guide will walk you through how we can connect to your database in development and production. - [Customizing Development URLs](https://getspin.pro/raw/docs/advanced/customizing-development-urls.md): This guide will walk you through how to customize your development URLs in with Spin Pro. Instead of using `laravel.dev.test`, you can use `my-awesome-project.test` or any other domain you'd like. - [Customizing The Docker Image](https://getspin.pro/raw/docs/advanced/customizing-the-docker-image.md): This guide will walk you through how to customize your Docker image for your project. You can add additional packages, change the PHP version, or even add additional services to your Docker image. - [Exposing Secure Tunnels](https://getspin.pro/raw/docs/advanced/exposing-secure-tunnels.md): This guide will walk you through how to use secure tunnels to expose your local development services to the internet. This is useful for sharing your work with clients, team members, or testing on mobile devices. - [Migrating from Spin v2 to v3](https://getspin.pro/raw/docs/advanced/migrating-from-spin-v2-to-v3.md): Although Spin v3 doesn't ship with any breaking changes, there is a new structure for managing your configurations with Spin that you may want to upgrade to take advantage of. - [Laravel Boost](https://getspin.pro/raw/docs/services/laravel-boost.md): Laravel Boost accelerates AI-assisted development by providing guidelines, agent skills, and a powerful documentation API that helps AI agents write high-quality Laravel code. - [Laravel Horizon](https://getspin.pro/raw/docs/services/laravel-horizon.md): Laravel Horizon is a beautiful dashboard and configuration system for your Laravel queues. It provides dashboard and code-driven configuration for your Laravel powered Redis queues. - [Laravel Octane](https://getspin.pro/raw/docs/services/laravel-octane.md): Laravel Octane supercharges your application's performance by serving your Laravel application using high-powered application servers. With Spin Pro, Octane is powered by FrankenPHP, providing modern web features and exceptional performance. - [Laravel Pint](https://getspin.pro/raw/docs/services/laravel-pint.md): Laravel Pint is a tool that helps you to keep your codebase clean and consistent. It provides a set of rules that you can use to enforce your code style. - [Laravel Queues](https://getspin.pro/raw/docs/services/laravel-queues.md): Laravel Queues are a powerful feature that allows you to defer the processing of a time-consuming task. This guide will walk you through how to use Laravel Queues with Spin. - [Laravel Reverb](https://getspin.pro/raw/docs/services/laravel-reverb.md): Laravel Reverb allows you to run web sockets in your Laravel application. This guide will walk you through how to use Laravel Reverb with Spin. - [Laravel Task Scheduler](https://getspin.pro/raw/docs/services/laravel-scheduler.md): Laravel Task Scheduler allows you to run scheduled tasks in your Laravel application. This guide will walk you through how to use Laravel Task Scheduler with Spin. - [Laravel Schema Dump](https://getspin.pro/raw/docs/services/laravel-schema-dump.md): Laravel Schema Dump is a command that allows you to dump the current database schema to a file. Here's how you can use it in your Spin Pro project. - [Mailpit](https://getspin.pro/raw/docs/services/mailpit.md): Mailpit is a self-hosted email and SMTP testing tool. It can be used to capture, inspect, and analyze email messages sent from your application. - [MariaDB](https://getspin.pro/raw/docs/services/mariadb.md): MariaDB is a popular open-source database server. It is a drop-in replacement for MySQL. This guide will walk you through how to use MariaDB with Spin. - [Meilisearch](https://getspin.pro/raw/docs/services/meilisearch.md): Meilisearch is an open-source search engine that allows you to perform full-text search on your data. - [MySQL](https://getspin.pro/raw/docs/services/mysql.md): MySQL is a popular open-source relational database management system. This guide will walk you through how to use MySQL with Spin. - [Postgres](https://getspin.pro/raw/docs/services/postgres.md): PostgreSQL is a powerful, open-source object-relational database system. It is a great choice for many applications and is easy to use with Spin. - [Redis](https://getspin.pro/raw/docs/services/redis.md): Redis is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. This guide will walk you through how to use Redis with Spin. - [SQLite](https://getspin.pro/raw/docs/services/sqlite.md): SQLite is a lightweight database that is perfect for simple application setups. This guide will walk you through how to use SQLite with Spin. - [Vite](https://getspin.pro/raw/docs/services/vite.md): Vite is a build tool that aims to provide a faster and leaner development experience for modern web projects. - [Introduction](https://getspin.pro/raw/docs.md): Learn how to self-host Laravel applications with zero-downtime deployments, automated CI/CD, and Docker. The easiest way to manage your own Laravel infrastructure without monthly fees. ## Marketing - [Affiliates](https://getspin.pro/raw/affiliates.md): Make money while we do all the work. How much better can it get? - [Managed Hosting](https://getspin.pro/raw/managed-hosting.md): Get a fully managed experience.