The plan is to build a GUI to enable users to configure the most obvious & commonly-required config for each service. So for PHP for example, I think the single most obvious candidate is the memory_limit
config. Beyond that, eventually I would like a UI where you can easily enable/disable various PHP extensions.
In the meantime unfortunately this has to be done manually, and in a particular way. Because I have personally used Indigo for almost two years on some very large projects with pretty complex infrastructure requirements, it was obvious right from the start that some users (eg me lol) would benefit from complete control over the config of all the services, beyond what is exposed in the GUI. This is actually why there's no config in the UI just yet: it just didn't need it while only one small team was using it.
So I will outline the "power users undocumented secret method" below. I apologise for the complexity, but the functionality is in place simply to provide unlimited configuration control.
note: if you do try this you'll be venturing into somewhat less stable waters; there are some known issues whereby Indigo is not automatically rebuilding the stack properly when it detects remote changes to the configuration.
Providing custom config overrides
Overview: The .indigostack
files are actually bundles, and if correctly-named directories are found inside the bundle, Indigo will recursively merge them over the top of its own configuration.
So for example my workproject.indigostack
bundle contains the following manually-added directory structures and files:
php_B058/etc/conf.d/php+pcre.ini
where I configure pcre
php_A969/etc/php.ini
where I configure a higher memory_limit
system/nginx_reverse_proxy/conf/sites-enabled/custom.conf
where I set up some complex reverse proxy configs that are unlikely ever to make it into Indigo's GUI
So you can see that a) any configuration is possible and b) it's a very much hand-constructed at this stage and basically only useful to people confident modifying service configuration files.
Prepare the new config
- locate the source configuration files for the service. These are inside the Indigo app bundle at
Indigo.app/Contents/Resources/Services
eg Indigo.app/Contents/Resources/Services/php/8.1.5/etc/php.ini
.
- copy that file to your Desktop, together with its containing folder(s) eg
~/Desktop/php/8.1.5/etc/php.ini
- edit the config however you wish. Indigo uses Mustache templating, so you can leave that in place or feel free to override it eg
memory_limit = {{memory_limit}}
can be replaced with memory_limit = 256M
- feel free to add any new config files in their correct locations
Move the new config into your indigostack file
- find out what Indigo has named your service: in Indigo, right-click the service in the rack and select "Show Compiled in Finder"
- take note of the service folder name eg
php_B058
- rename the folder on your desktop from
php
to php_B058
- In Indigo, right-click on the stack and select "Show in Finder" to locate its
.indigostack
file
- open the
.indigostack
file: right-click it in the finder and select "Show Package Contents"
- move the new config from your Desktop to your
.indigostack
bundle eg mystack.indigostack/php/8.1.5/etc/php.ini
- Indigo should notice the change and automatically rebuild your stack. If not, in Indigo right-click the stack and select "Rebuild..."
Yikes. It does work — as mentioned, that's how I have configured Indigo myself for some very complex scenarios. It's also not really as bad as it reads above, depending on your past experience.
If you decide to try this, let me know how you go. I'm also interested whether people think I should put the above into the documentation on the site, or whether it will just freak people out!
Finally, if you'd rather not do any of the above, and think the config you're after should really be in the service GUI please let me know; I'm keen to start adding the config UI for the most often-changed stuff.