As I'm a total n00b, I was wondering if there's a way to install, or import data from (for example) Spoke and Chain without using Docker, or Nitro?

For what I've seen, CraftCMS will be something to love! But when the word 'Docker' comes by, I'm really getting frustrated! Of course this has nothing to do with the way it's built, but it's my blame here. I'm just a simple front-end developer and the complexity which comes with Docker on several layers gives me the creeps :-D I just want to do what I'm good at, and that's designing, not completely re-configuring my VPS. As CentOS has ended it's support, switching to another OS gave me enough headaches already. I'm running Ubuntu 20.04 now, which pushed me into learning new approaches, but it's running fine now.

I really hope it's possible what I'm asking for, because otherwise I need to pass on CraftCMS and look for something else.

Anyone who has an answer / solution for me? What's wrong with the old-school approach of creating a database (MySQL / PostgresSQL), import data, place the content in a manageable place and finally change the config files as needed?

[UPDATE] Thanks to MoritzLost I'm almost there! I'm really glad that there are people like him to help n00bs getting up and running.

I cloned the GIT repo (Spoke and Chain) and followed the procedure. After a couple of bumps in the road, almost everything seems to work. The backend is nicely filled with demo data and no errors or whatsoever. But when I take a look at the frontend, the logo and navigation is showing, but the rest is blank. Also no errors. But when I click a link, let's say this one: https://craft2.hielke.net/bikes I get a twig-error. You can see it for yourself if you click on the link.

Here's the screenshot: enter image description here

This is my .env file:

 # The environment Craft is currently running in (dev, production, etc.)

# The application ID used to to uniquely store session and cache data, mutex locks, and more

# The secure key Craft will use for hashing and encrypting data

# The database server name or IP address

# The port to connect to the database with

# The name of the database to select

# The database username to connect with

# The database password to connect with

# webpack dev server (loopback IP for VMs)

# Twigpack

# Email

# Default Site URL


It looks a lot different than my usual .env file, so comparison did not help me out here. Does the twigpack section have something to do with this?

I hope I'm not violating any rules here, because it maybe off-topic what I'm asking here.

Thank you very much in advance for thinking with me :-)

  • Looks like a template is including an image template but the image parameter is empty. Probably just a missing empty check in the template. Check the stack trace to see which template the error is coming from. Then either adjust the template or upload the image it's looking for. For example, check if there are any Globals that expect an image (for example, the site logo might be a global field).
    – MoritzLost
    Commented Jan 19, 2022 at 13:40
  • Twigpack is just a bridge between Webpack and Twig to facilitate hot reloads for the webpack dev server. Shouldn't be causing any trouble if you're not using it.
    – MoritzLost
    Commented Jan 19, 2022 at 13:41

1 Answer 1


Yes, absolutely, you don't need Docker or Nitro! Docker does make it a bit easier to create a common development environment / setup if you're working on a project with multiple people, but it's absolutely not required.

All you need in your development environment are MySQL (or PostgreSQL), PHP, Composer and a local dev server. For my setup at work (on macOS) I use the following:

  1. Homebrew to install PHP, MySQL and Composer (brew install mysql, brew install php, brew install composer).
  2. Laravel Valet takes care of the local dev server (nginx), PHP-FPM configuration and nice *.test domains for testing.
  3. The database I just create manually (one user + database per project) on the shell, though you can of course use something like MySQL Workbench or Sequel Pro for convenience).

If you need NodeJS / NPM for build scripts, you can install different versions easily using nvm (Node version manager).

Now when it comes to production hosting, you'll probably want more automation and less manual setup. At work we use Laravel Forge to spin up new VPS and configure automatic deployments from git. Make sure you put your project under version control and use project config to deploy from your local test environment to production easily. Read more about Deployment Best Practices here.

  • Thank you for your detailed explanation @MoritzLost! As I mentioned, I have CraftCMS up-and-running, BUT like to install the 'Spoke and Chain' e-Commerce demo. I can't find any documentation about installing that without Nitro / Docker. As far as I know there's no way to import such demo after installation. Thanks again for taking time to help me out! Really appreciated
    – Hielke
    Commented Jan 18, 2022 at 9:58
  • @Hielke Hm, difficult. The demo is basically a pre-built site that comes with a lot of build automation stuff by the looks of it. If you want to run that site without nitro, you're gonna have to run the build tools yourself. In this case, just follow the regular installation guide, but instead of composer create-project craftcms/craft, you clone the demo from github. You are gonna need NPM though to build the frontend assets, see the README for details. To be honest if you just need a quick demo, just installing nitro might be easier.
    – MoritzLost
    Commented Jan 18, 2022 at 11:29
  • Thanks @MoritzLost! I'm getting close to up-and-running :-) I edited my post based on your guidance and help :-) I'm very grateful! I hope you have the final answer for me :-)
    – Hielke
    Commented Jan 19, 2022 at 10:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.