alwaysdata | blog Le blog pour suivre l'actualité alwaysdata Thu, 31 Jan 2019 15:05:05 +0000 en-US hourly 1 alwaysdata | blog 32 32 2019: more than ever here to guide you! Thu, 31 Jan 2019 14:37:49 +0000 We’re already nearby end January, so before it’s too late, we want to wish you the best for the upcoming year! 2019 started faster than ever, so remove the last glitters, put on your helmet, ride your scooter, here’s our roadmap!

2018 storm

Last year was pretty awesome for our whole team, with a lot of new features and changes. Let’s try to summarize it! 2018, this is:

What’s next?

All of this was a lot of fun to do alongside you.

There’s no reason to stop here. Here’s a preview of our topics for 2019:

  • A broad change in alproxy, our custom reverse-proxy that serve every one of your visitors’ requests: we build-in a scalability feature that will allow us to distribute the incoming traffic across multiple front-end servers — a load-balancing feature integrated into our platform without extra cost;
  • A new tool dedicated to backup restoration: simply fill-in the file and date you want to restore, and the tool automates it for you;
  • We’re still working on the update of the HTTP layer in alproxy, which will allow us to natively support both HTTP/2 and HTTP/3;
  • Our CDN is on tracks: with the built-in Cache feature available yet, and the incoming auto-scalability feature, we will start to deploy new servers all around the World to give you a complete CDN network;
  • A new monitoring tool is incoming to let you visualize precisely your servers consumption and let you plan future upgrades;
  • We plan to upgrade our Debian based distribution during the year, and thanks to our migration process, this will be totally transparent.

New offers, new world

We spent a long time on it, here’s a new design for our website! A new identity to present the alwaysdata’s magic to everyone.

More than ever, we’re a hosting provider: our servers allow you to get your Web services online and running, for your websites, web apps, databases… also e-mails, backups, and more. However, we’re not just a hosting provider. We built a platform that embeds and runs everything you need, from programming languages to brokers, and we manage all of them for you, regardless of your offer, from shared hosting to dedicated servers. From this point of view, we’re a PaaS provider1).

So it’s time to change that identity a little bit — new terms: environments instead of plans, PaaS along with Hosting provider, etc. There’s also a new Gold environment available.

All details in an upcoming blog post about the brand new but still very same alwaysdata.


We want to continue to give you feedback and right inputs about new technologies. So we continue our Tech Evangelism Tour, with new events, and new topics!

Next, we’ll be at:

We cover a lot of topics with new talks about blockchain, containers, timezones, and REx about our backups and migration tools. Get in touch by waving at if you want to see us at your event!

Bug Bounty

One more thing!

We pledge in favor of well tested, secured environments. That’s why we decided to handle a Bug Bounty Policy. Whether you’re a security researcher or a bug hunter, feel free to report your bug accordingly to our program.

More than ever, we build our platform with you, for you, to help you to power the best services ever. Welcome again to our great community, 2019 is already running on a rainbow!

Notes   [ + ]

1. although we do not plan to play with fancy Kubernetes stuff
]]> 0
Are you ready to rule the World? Tue, 18 Dec 2018 13:23:34 +0000 Here’s the third article of this series dedicated to our new Marketplace. We introduced it a few weeks ago, and we added many frameworks for dev learning and quick prototyping.

So, in this last post, enjoy…

… custom scripts for editors, DevOps, and everyone!

Among the reasons we had to rebuild our marketplace, is the ability to create and distribute install scripts efficiently. What we had in mind was use-cases where you’re developing a Web service or application, and you need to deploy it regularly1) or you want to distribute it in a 1-click install2).

To help you through this process, we built this new platform that powers our marketplace. As we said earlier, we now rely on simple scripts to provision a new instance. You choose your preferred language3), and we run it.

Specify your environment

Each script creates a new Sites type instance to host your app. You sometimes need to configure it a bit, especially regarding URL rewriting and all. To specify common settings, you must declare a YFM4) with the regarding options and values.


# site:
#     type: php
#     php_version: '7.2'
# database:
#     type: mysql

Here we declare a PHP site, stick to PHP 7.25), with a MySQL database. If you run the script right now, it will do nothing more than creating a new Sites and a MySQL database.

Then, clear the environment6), and execute your install process, like downloading the last release, extract it, install and configure stuff, etc.

set -e


Collect user informations

You sometimes need to grab some user information, like the locale, admin password, and username, to preset the instance accurately.

You can declare a list of form fields you want the user to fill-in before provisioning the instance. Rely on the YMF part to add the fields definitions, with validation rules:

# form:
#     language:
#         type: choices
#         label: Language
#         initial: en_US
#         choices:
#             de_DE: German
#             en_US: English
#             es_ES: Spanish
#             fr_FR: French
#             it_IT: Italian
#     email:
#         type: email
#         label: Email
#     admin_username:
#         label: Administrator username
#         regex: ^[ a-zA-Z0-9.@_-]+$
#         max_length: 255
#     admin_password:
#         type: password
#         label: Administrator password
#         max_length: 255

That’s all! You can now use them in your script as they are sourced by the platform when running it:

php wp-cli.phar core download \
    --locale="$FORM_LANGUAGE" \
php wp-cli.phar core install \
    --admin_user="$FORM_ADMIN_USERNAME" \
    --admin_password="$FORM_ADMIN_PASSWORD" \
    --admin_email="$FORM_EMAIL" \

We want the experience to be the more frictionless for users when they run install scripts. That’s why we recommend not to ask for too much information before provisioning the instance, but only the mandatory ones. It lets them configure their instance when the provisioning has finished.

Distribute your code

If you write a script to install an open source software or your solution, why not to distribute it through our platform? That’s precisely why we built this new marketplace: for the community!

Just go to the add an application script view in your administration interface, fill in the form, and check the Public application checkbox. It registers your app for a review, and we’ll publish it quickly on the marketplace.

Administration interface: Add a new application script
Administration interface: Add a new application script

We do a review of the scripts before releasing them publicly in the marketplace. It ensures no one will try to compromise your account by distribution malicious scripts. Nevertheless, we can’t review the sources distributed across the script itself when downloading the release tarball. As a customer, you must check your install and verify its consistency. If you write a script, please inline checksum and signature tests to ensure the sources integrity.

You’ve got a new way to increase the quality of the alwaysdata’s community, and we hope you will contribute by releasing scripts for your own solutions.

Take a look at the official documentation (it includes the whole script used in this blog post), and let us know which scripts you want to add!

Notes   [ + ]

1. i.e., if you’re agency and this is your homemade solution
2. i.e., you’re editing an open source software and want it available to everyone easily
3. from Bash to Python or Ruby
4. which is a simple YAML dataset in comments
5. it automatically takes the last minor release of the 7.2 branch
6. always better to avoid conditions
]]> 0
Meet Web makers: 3 questions to Occitech Thu, 13 Dec 2018 16:18:48 +0000 For 12 years, alwaysdata works along Web professionals for their hosted PaaS solution to help them to deliver their services the better way. This community of makers is rich in knowledge and talents. We wanted to salute them.

We start this new blog post series to let you meet people behind projects listed at alwaysdata for a while. Here’s Occitech, a Web studio founded in 2006, for the first portrait.

We met Étienne Zulauf, co-founder of the studio, to ask him with the following 3 questions: What are your particularities; What technical need to you encounter; Why did you choose alwaysdata? This post is a gist of our interview to let you discover their world.

What makes Occitech that particular?

Two developers lead Occitech. This particularity conduct to no business task force, and so on no growing business nor rentability objectives. What makes our people happy is the quality of the code delivered through agile processes, and the new technologies used when it fits the goals of the project, thanks to a continuous technological watch.

Decent work conditions, looking for good relationship with clients, and pretty much flat management allow to tremendous transparency about enterprise budgets and results. This way, Occitech’s salaries understand financial decisions and don’t dream when they work on new projects. They are more confident in the whole enterprise’s plan.

With a vast majority of eShop and dedicated Web apps projects, what technical need do your encounter?

Occitech develops business applications that use PHP or NodeJS® backends, with React frontend interfaces. eShop projects are based on the Magento solution, a technology well-known by the studio for several years now.

Some projects use modern technologies, like Event Sourcing, or GraphQL API for increased performance in client-server requests. Occitech is at ease to deploy those new patterns and technologies when they fit with project’s objectives, even if they are outside of their comfort zone. Occitech’s goal is always the same: to give a bespoke conception to specific needs, with the best quality available.

All developments are covered by tests and continuously deployed at alwaysdata thanks to the services provided by the platform.

Occitech works with alwaysdata since 2013, giving to its client the facilities they need

By sharing its dedicated services with its clients, Occitech gives a hosting service stable and efficient. Both alwaysdata servers’ horsepower and quick ‘n precise support allow Occitech to offer a high-quality hosting platform through a dedicated company: Ethersys.

This service is managed by a senior sysadmin, Cyprien, who provides precise guidance out of hosting scope, on clients’ CMS or other issues. Clients love him et congratulate him regularly… Thanks to alwaysdata and Cyprien, we’re able to offer to our clients both dedicated server performances and sysadmin support for a starting price at €30 per month.

By using the alwaysdata platform, new features that always come faster, settings more and more precise, languages versions always up-to-date, and other features, Ethersys can rely on a reliable partner for its service base.

Both for us or other teams, alwaysdata’s platform is an ideal for every developer.

We let Étienne Zulauf, co-founder of Occitech, to conclude those 3 questions:

A second studio created last summer. Commit42, who shares our office, and explore other technological and managing methods, is a great success. We confirmed this way our capacity to share our technical knowledge, and our ability to create synergies with a second team, both close to our technologies and inspired by our methods. This new company grows fast and goes to other horizons. It’s fascinating!

Then, we released a project started in 2015 that offers a solution to manage visitors screens for online stores, with modern technologies like React and GraphQL: Front-Commerce. Here again, the alwaysdata platform is a must-have: with a backend written in PHP1) and a NodeJS® middleware, compared to other hosting providers, everything can run on the same account, without any pre-requisites. We launched it in production this year on and, the results are great: modern tools for developers that will decrease their development time, without having to deal with templating; and really fast visitor performances for a better transformation rate for the seller. Some known French agencies will start to deploy the solution for the next months, and we try to reach the rest of Europe and USA… A massive program for a new trade that we still don’t know: editor!

A big thank you to Étienne for his time in this interview game, and for his audacity to be the first one in the series. We will let you discover other passionating Web people that use alwaysdata solution.

And during the end of the year, some new features are coming, stay tuned!

Notes   [ + ]

1. Magento 2
]]> 0
Stay close to your people: here are the mailing lists! Tue, 11 Dec 2018 12:47:41 +0000 As a French team at alwaysdata, we consider good things are like good wine: they need time to be nice. Mailing-lists system is finally here, and we’re both happy and proud to release it to you!

Why a mailing-lists feature?

Because we can!

More seriously, because it’s a feature many people ask for a while now. We already host a full e-mail stack for our customers. You can easily create as much e-mail boxes as you need, redirect to other addresses, server-side filtering with Sieve, enable anti-virus scan and anti-spam, and many more. There is no reason not to offer a full mailing-list solution.

The second reason is that it is mandatory for whoever wants to not rely on external providers or large business solutions for their communication, or team organization. Nowadays, if you want to use an e-mail based discussion system, the only ready-to-use solution is Google Groups or Mailchimp-like offers. Not that good in term of privacy or autonomy. And we trust in privacy.

For both reasons, it is time to give you the ability to self-host and manage your mailing-lists directly from your alwaysdata’s account. Until now, a little trick was to create a new e-mail address that redirects to many addresses. Even if it works well, it doesn’t offer a clean solution to let people to subscribe to it, nor to moderate it.

Take My Money!

It won’t be necessary; this is not an option, it’s a feature!

Just log in to your account, and go to the new Mailing-list section, it’s enabled by default, as every service we offer.

Administration Panel: Mailing Lists
Administration Panel: Mailing Lists

We labeled it as Beta for now, because having this feature enabled means we had to add a new software in our stack. Even if we tested it a lot, new users might encounter unexpected behaviors. Report them using our tickets system if you’re facing one.

To create a new mailing list, fill the form view behind the add a mailing-list button. You have to indicate the mailing list name as the form of the local part1) of an e-mail address; and mailing list’s domain. It forms the mailing-list public e-mail address, like

Administration Panel: Create a new Mailing List
Administration Panel: Create a new Mailing List

Then, like with our databases2), create one or more users you want to bound to the created mailing list. You can specify their role3) per list.

Administration Panel: Create a new Mailing User
Administration Panel: Create a new Mailing User

No more setup needed. All mailing-list operations are doable in the Postorius interface, like bulk adding/removing members.

Each mailing-list come with several associated addresses, in the form of [listname]-[xtra]@[domain]. Here are few extras available:

  • owners: use it to send an email to the moderators and administrators of the given list
  • request: perform actions on your mailing-list account; send help in the subject to get the list of available commands
  • confirm: manage the subscriptions to the list
  • bounces: sends confirmation of actions on the list

Our mailing-list system is powered by Mailman. You can rely on its documentation to get some information about how to use and manage your lists. Keep in mind that lists’ administrators and moderators are only settable in your alwaysdata’s interface.

We promised it for a while. It took time, but we keep our promises. Mailing-lists are now a reality for all alwaysdata users. Because we eat our own dog food, we plan to release a newsletter4) in 2019, feel free to subscribe!

We have a few more surprises before the end of the year, so stay tuned!

Notes   [ + ]

1. before the @
2. because a mailing-list is finally just a database dedicated to e-mails addresses
3. moderator or administrator
4. only 3 or 4 times per year
]]> 0
Meet our timer daemon, it’s a revolution! Tue, 04 Dec 2018 14:13:54 +0000 While ending this year, we release all developments that occurred during the last months, which are now ready to go in production. We’ve got a lot of new features to improve your experience with your alwaysdata’s account.

Some Web apps or services sometimes require you to run tasks periodically. From a WordPress blog where you want to rely on an OS scheduled tasks, to a broker that you need to purge from its messages queue periodically, or an RSS feed reader that you want it to retrieve its new articles at a given time, there’s plenty of use-cases.

The main point is: services may need to run commands, or get URLs, without any user interactions. Every time you face this case, you need to register a scheduled task.

Our platform use Debian as its base and you’ve got full access to your Unix account on the servers. It means you can register your tasks by editing your user’s crontab with crontab -e.

For us, it wasn’t enough. For two reasons. The first one is that it splits the administration logic between our admin panel and the Unix system. The second one is the crontab syntax so dull.

The bonus1) point is also that a task scheduled using crontab means its declaration stays on a server, which is not the server that runs your services2). When we move your account to another server3) we had to take care of potential cron tables, which breaks the unity and simplicity of our platform.

So, we added a Scheduled tasks support directly in your interface!

Administration Panel: Scheduled Tasks Interface
Administration Panel: Scheduled Tasks Interface

If you need to register a new task for any of your services, go to this new section in the administration panel and add a new task.

You have to fill in the form with few pieces of information:

  • The command(s) you want to run, or the URLs you want to GET: if you need to ping one or more URLs to trigger distant services, just fill them in; otherwise, declare the command line to execute.
  • The periodicity you want the task to repeat. You can specify a given time or a time interval. If this field isn’t powerful enough for your need, feel free to come back to the crontab syntax to precisely run your task.
Administration Panel: Create A New Task Interface
Administration Panel: Create A New Task Interface

That’s all. Your task is now registered, and the platform takes care to run it.

About the WordPress example aforementionned, you can register a task like php $HOME/wordpress/htdocs/wp cron event run --due-now that you can run every 10 minutes4).

All timer features are also available through the API, to allow you to easily register programmatically any scheduled task you need.

We do not rely on existing cron tools for those tasks, but instead use our own implementation: aljob. This for two reasons:

  1. Scheduled tasks aren’t executed right at the given time, but in a minute range. It means that a task scheduled at 00:00 will run at some point between 00:00:00 and 00:00:59. When you’ve got hundreds of tasks scheduled at midnight5), it prevents an overload of the servers.
  2. If you often run a long task (e.g. every 10 minutes), our daemon automatically detect that the previous task didn’t exited, and skip the new one, automatically preventing the overload and race conditions in your long loop execution.

Want funny stuff? You can run tasks even without any service installed in your account. Here’s a custom command I run every day:

curl -L "" | jq '.results | to_entries | .[].value | "\(.title) [\(.url)] (\(.relative_time))"' | mail -s "Daily news about Google"

It pings the DuckDuckGo news API and queries it about contents related to Google6), then filter the returned JSON to extract the news’ title, URL, and date. It finally compiles and sends it to my mail, so I’ve got my daily digest about Google related stuff in my mailbox.

Scheduled tasks panel is now available in your administration panel. We will remove the crontab support for shared hosting soon. If you rely on crontab for your tasks, they’ll be reported automatically to scheduled tasks. VPS and Dedicated hosting will have both scheduled tasks and native crontab available and can use whatever solution their prefer.

If you spot any improvement to this feature, feel free to report it. We’re also curious about what use you can have of the scheduled tasks, use comments to surprise us!

Other features are on their way to production. Stay tuned and keep an eye to our Twitter #advent thread as more news are coming.

Notes   [ + ]

1. and technical
2. our SSH servers and HTTP servers aren’t the same ones
3. which occur transparently every day and then
4. do not forget to disable the WordPress fake embedded cron by adding define('DISABLE_WP_CRON', true); in your wp-config.php file
5. like on our Shared hosting plans
6. yeah, I like to troll them all
]]> 0
Frameworks… everywhere… Thu, 29 Nov 2018 12:37:29 +0000 Two weeks ago, we announced a huge revamp of our marketplace. This new version allows you to install several Web apps effortlessly in 1-click into your account.

Since then, we1) continued our scripting work, here’s the result!


What the Web could be without the various languages frameworks we use every day to power our apps?

We’re Pythonistas here at alwaysdata, especially happy with the Django framework that power many components of our stack. However, we know that what makes the Web realm so exciting is its diversity. So we choose to give you the ability to deploy most of the known Web frameworks in 1-click!

We built Hello World examples for all of them, and that’s what you’ll deploy when installing it. Here’s the brand-new list:

Administration Panel: 1-click install, frameworks list
Administration Panel: 1-click install, frameworks list
  • CakePHP: Modern PHP 7 framework
  • Django: High-level Python Web framework that encourages rapid development and clean, pragmatic design
  • Express.js: Fast, unopinionated, minimalist web framework for Node.js
  • Flask: Microframework for Python based on Werkzeug, Jinja 2 and good intentions
  • Laravel: PHP Framework for Web Artisans
  • Macaron: A highly productive and modular web framework in Go
  • Phoenix: A productive web framework for Elixir
  • Ruby on Rails: Famous web application development framework written in Ruby
  • Sailor: A Lua MVC web framework
  • Sinatra: DSL for quickly creating web applications in Ruby
  • Symfony: PHP components and PHP framework for web projects
  • Zend: Professional PHP packages ready for PHP 7

Once installed, feel free to access your account remotely, from (s)FTP to WebDAV to work on it, make some tests, and unleash the power of the Web applications!

Also new apps

With this release of new scripts come new apps too! We added support for:

  • Connecthys: Open source Web portal for managing multi-activities
  • Kinto: JSON document store with sharing and synchronisation capabilities
  • Omeka (S and Classic): Web publishing platforms for sharing digital collections

More are coming soon, we continue to make the list growing everyday!

Frameworks are the second step for our marketplace. We’re always working at writing install scripts for new apps and Web solutions. Coming soon is the third article of the series that will bring you the whole power of this platform.

Stay tuned and, Ho!, it’s nearly December! Keep an eye on our Twitter feed as we’ve got many surprises for this advent period 🎁!

Notes   [ + ]

1. Big up again to Héloïse 🙏
]]> 0
Are you ready for a new place where everything starts? Tue, 13 Nov 2018 12:37:08 +0000 November is pretty much here. I guess it’s time to give you some feedback about our devs during last summer, and what we built around the pool.

A feature we wanted to rethink from scratch for a while is our 1-click install. We offer a simple way to deploy pre-provisioned app in your user space. Unfortunately, our architecture was a bit outdated to easily add new app, so we decided to rewrite it1).

The Marketplace: a new place to start your projects

Deploying new app often follows the same steps:

  1. Find the archive containing the app or service you want to install
  2. Download it in your user space, extract it, and navigate into the created folder
  3. Perform actions, from the installation to configuration, either from the CLI or a (web)GUI
  4. Create a new database that is missing for your app
  5. Configure it again
  6. Enable the %$@! missing extensions
  7. Configure it hopelessly for the last time
  8. Create a new site that points to your given app folder
  9. Fix permission
  10. Sometimes drop everything and restart from 1/ to fix it (╯°□°)╯︵ ┻━┻

So we built a solution to help you during this process. Using our 1-click install, you can deploy and automatically provision your app or service in your user space. No more need to configure system requirements, or manually download and install stuff. Just click on a button, and it’s done.

Administration Panel: 1-click install link
Administration Panel: 1-click install link

Alas, our initial architecture relied on automating some process through web-UI with interface scripting and some tools like PhantomJS. This latter is deprecated for a while, and all recent projects offer at least a CLI to manage the installation, configuration, and provisioning. It was time to rethink our solution to improve its reliability. This new architecture also allows us to provide you with new app, unable to support previously. Welcome to a new place where everything starts!

Find your preferred app

We just released our first production-ready new 1-click install platform. After testing it intensively during the last weeks, we’re now confident in its internal stability.

Administration panel screenshot: 1-click install interface<br /><small>(please note that rates in the screenshot are purely fictive for the sake of (realistic) contents)</small>
Administration panel screenshot: 1-click install interface
(please note that rates in the screenshot are purely fictive for the sake of (realistic) contents)

Another (huge) task was to port existing apps to the new platform. Releasing the new platform with fewer applications than before was a no-go. Our team2) did important work on it. Here’s the list of apps and frameworks you can currently deploy with the new 1-click platform:

  • DokuWiki: A simple wiki, ideal for team documentation
  • Drupal: A PHP CMS/Framework to manage your website content
  • Gitea: A lightweight, self-hostable, Github alternative for your code repositories and issues
  • Joomla: A commonly used PHP CMS
  • Magento: A well-known PHP e-Shop platform
  • MediaWiki: The most known Wiki, used to power Wikipedia
  • NeoFrag: An E-Sport oriented CMS
  • Nextcloud: A personal cloud that offers collaboration capabilities
  • PrestaShop: A simple e-Shop platform
  • Thelia: An E-Shop platform for medium to large businesses
  • Wallabag: An open source Read It Later solution
  • WordPress: The well-known CMS/Blog engine solution

Note: A few apps disappeared, like phpBB, because they don’t offer an inner solution to deploy them (like a CLI). Because those apps also suffer a lack of interest from the community, we decided to remove them.

What’s in the back, now?

As most recent Web applications offer improved ways to install and configure them, it sounds great to use their built-in capabilities. So we imagined a way to configure and script them easily.

Each script declares an environment and a variable configuration set using a YAML Front Matter.

    type: php
    php_version: '7.2'
    type: mysql

It allows the provisioning system to automagically create the website type and set it up, configure the interpreter with the needed extensions, preset the databases needed to run the service, and all. The last tarball is fetched3), and extracted in your user space.


set -e

composer global require wonderfulapp/console

php .composer/vendor/bin/wonderfulapp app:download --www="$INSTALL_PATH" default
php .composer/vendor/bin/wonderfulapp app:install --www="$INSTALL_PATH" --mysql-login="$DATABASE_USERNAME":"$DATABASE_PASSWORD" --mysql-host="$DATABASE_HOST" --mysql-database="$DATABASE_NAME" --skip-exists-check --drop default

rm -rf .composer

shopt -s dotglob nullglob

Then the script itself is executed to provision the application with the settings specific to your alwaysdata’s account. Generating configuration files, running database migration, fixing permission, and whatever other tedious deployment tasks: everything is automated.

That’s all; your app is now ready to use.

Wow, it sounds great!

Yeah, it is! For us, it offers many advantages:

  • It’s just scripting, so it’s easy to write new scripts to add new apps and frameworks to the platform.
  • We removed the tricky parts based on automating web-UI configuration, so the scripts are more robust and more testable.
  • They’re scripts, so a few basic knowledge of shell commands are sufficient to develop them. Not comfortable with Bash? Use any scripting language you prefer (Python, Ruby, etc.), and it will work as well!
  • We use the features offered by the editor to automate complex tasks, leaving the application itself maintaining compatibility between two versions.
  • Scripts are Shiny, Scripts are Bright, Scripts are the Children of the Unicorns.
  • Handle errors and fix them are a lot easier than with UI automation.
  • Did I say it’s just scripting?

Our goal is to provide you with the most common services and application, without breaking the whole install script each time the developer releases a new version. This new platform allows us to give this comfort to you, and we expect to bring you new app regularly.

A word about safety during deployment

Some automated tasks provide you with feedback, and we also handle those use cases. Here are the most important parts relying upon safety during the automated deployment process.

Random Passwords Generator

You often need to provide an admin password for your back end interface when installing new applications. Our script can generate a random password for you, or let you input your own password during the preset step of the process. Whatever you choose, your password is never stored by our platform. You stay the only owner of your own solution.

Note: We don’t store any sensitive information, but if your app relies on an unencrypted password in its configuration file, the password stays in its plain version. As the configuration file is stored in your user space with proper permission, it’s not a big deal about security. But if you consider it as a risk, please fill an issue in the app’s tracker to get encrypted password support ;).

Admin URLs, Custom configuration, and more

Some solutions allow you to customize your admin URL. We made some choices by default, to simply the deployment process. You’re even allowed to customize those URLs as you wish after the installation, to stick to your needs.

Finally, we just provision the deployed app with a safe default configuration. You can modify, update, and customize any settings right after the installation process.

Databases Creation

All mandatory databases are created automatically with a new user dedicated to your app and a random password. We do not store any information related to your database configuration during the process. Your data stays safe.

Logs (coming soon with the next version)

You can access the install logs generated during the automated process from your user space itself. If the install task fails for any reason, you can get more feedback about why it failed. If you want to send the report to anyone, the logs already miss all sensitive information, so neither username, paths, nor password appears in them.

We always want to give you a hosting platform that is simple and full of functionalities. We expect that this new feature will improve your deployment process and help you to deliver your content faster.

This blog post has a companion. In the next few days, we will provide you with a new article that will unleash the whole power of this 1-click install process #teasing.

During this time, what if you give us the applications you want to see available through this process? Use the comments or wave us by e-mail at to suggest new app to add.

Notes   [ + ]

1. spoiler: there’s another excellent reason to build a new architecture, more news in an upcoming post 😉
2. and especially Héloïse and Nicolas, warm thanks to them
3. either using a classical cURL or with a dependency manager if provided through this way
]]> 4
Teaching program for better IT courses Thu, 20 Sep 2018 15:38:11 +0000 Web architectures became more and more complex. Understanding how they work, and how to use them, is a big challenge. Our engineers started to work with Internet stuff a long time ago1), and if we had to learn everything from scratch today, we probably face an entirely different challenge. Because we had the chance to be there for a long time2), we think it’s our job to help newcomers to be able to learn in the best conditions.

x files nod GIF by The X-Files

Teaching program for teachers

Say you’re a teacher or an IT school, and you greet new students for a courses cycle. They will learn how Web applications or services work, how to develop them, how to push them in production. So you need to provide them with a production stack, meaning at least an HTTP server, probably a database, and the language you’re ready to teach them, from Node.js to Python. You really don’t want to spend an entire hour (at least) to help them to set up their environment. Nor to provide them with Virtual Machines which won’t run on everyone computers. And I don’t tell you about the fact they will need to deliver a project at the very end that you will have to test and review.

Why don’t rely on a ready-to-use solution to address the environment issue?

Here’s our plan with the teaching program. We want to make partnerships with people in charge of IT students. Using this program, teachers can provide their students with a full-provisioned environment.

To get it, just sign up for an account as a teacher, and open a ticket to ask us about the teacher plan, mentioning which course(s) and school you’re teaching for. We will update your profile to a teacher one. This profile allows you to:

  • create as many free plans as you need (one per student)
  • increase the limit of each plan to 200MB
  • use your permissions layer to give each student all rights to perform actions on its account by attaching its e-mail to
  • not get your IP blacklisted by our security layer when we will detect massive requests from all of your students

That’s all! All your students now have access to a dedicated free plan, where they can use all the features of our platform: languages, unlimited databases, as many sites as they need, etc. You, as a teacher, keep the control on their accounts and can revoke their access at any time.

This program is free of charge for teachers in public schools. Contact us if you’re a private institution to build a partnership!

And still 50% for students

We know that, as a student, we often need some hosting plan for our side-projects, portfolios, open source tools, etc. Your student or unemployed status doesn’t mean you must give up to high-quality service. That’s why we offer complete access to all our plans with a 50% discount for all students and unemployed people. Don’t hesitate to ask for it!

people you may know GIF by The Orchard Films

Notes   [ + ]

1. I personally built my first website more than 20 years ago
2. who said we’re dinos‽
]]> 0
Fall 2018 Events Tue, 18 Sep 2018 15:12:53 +0000 It’s already mid-September, which probably means you’re now back to work. It also implies it’s time for us to retake the road and greet you with a wave! More than ever, we consider as crucial to share with others our thoughts and feedback about technologies, security, and privacy.

Without further delay, here’s our already confirmed program for this fall 2018 edition:

  • Sept. 19: LTArena (Amiens, France), Privacy By Design(FR)
  • Sept. 27: La Tech Amienoise (Amiens, France), Zero Knowledge Architecture(FR)
  • Oct. 6–7: PyconFR, (Lille, France), La Crypto pour les devs(FR), Full-remote, guide de survie en environnement distant(FR)
  • Oct. 18–19: Connect.Tech (Atlanta, Georgia, USA), Crypto for devs(EN)
  • Oct. 24–25: Blend Web Mix (Lyon, France), Privacy By Design, the hard way(FR) ; here’s a quick introduction, in French:

We’re waiting some other events’ answers, like Capitole du Libre, POSS, DevDay… We expect to see you there too!

Organizing our events tour is a long-term task, that’s why we’re already planning 2019 events. If you want to see us in Quebec for the edition, please read our proposals and upvote them.

star trek hello GIF

See you there!

]]> 0
Custom logs Thu, 26 Jul 2018 11:37:58 +0000 Here’s our last blog post about new features in our reverse-proxy engine. Previously, we talked about WAF and HTTP Cache. Now it’s time to introduce you to custom logs.

Log GIF @Giphy

Upstreams logs

At alwaysdata, an upstream is an HTTP server our proxy use as a backend to serve pages to your visitors. An upstream can be a built-in HTTP server embed in your application, or a dedicated HTTP server like Apache or uWSGI.

Now, we write all output messages on standard streams1) to a dedicated file. This one is available in the ~/admin/logs/sites/ directory. Those logs allow developers and DevOps people to monitor and debug their applications running on our platform. When you rely on a custom upstream (like a Node.js service), you can get your application outputs. It allows you to find the glitch when a service refuses to start properly.

The same file hosts all written messages from all upstreams which belongs to the same alwaysdata account. Each upstream uses its PID2) to mark a line in the log file. PIDs allow you to retrieve which process (a.k.a. which upstream) currently output a line. This identifier is available between brackets after the date: [14/Jul/2018:10:04:21 +0200] [PID]. When an upstream end — e.g., when it stays idle for a long time — the given PID can be different when it restarts. Two lines are output in the log file each time an upstream wakes up. It allows you to match PID and upstream:

[14/Jul/2018:10:04:21 +0200] Upstream starting: /command/to/your/upstream ...
[14/Jul/2018:10:04:21 +0200] Upstream started PID: 12345

Access logs

Now, you can choose the name given to the access log files. To customize this entry, go to Sites → Edit → Logs.

Screenshot of website's logs customization view

You can also edit the output formats. If you need to parse your log files using a parser or a script, the custom output formats allow your log files to be suitable with your workflow. This field allows variable names between brackets {}. Their values substitute them at writing time. You can also free characters string. The syntax and variables available are documented in our logs page.

The default format is:

{request_hostname} {client_ip} - - [{completion_date:{%d/%b/%Y:%H:%M:%S %z}}] {request} {status} {response_size} {referer} {user_agent}

It returns this string: - - [16/Jul/2018:12:04:07 +0200] "GET /wp/ HTTP/1.1" 200 55380 "-" "curl/7.47.0"

To customize the output to provide the protocol, request duration and some characters strings, you may use the following syntax:

[{completion_date:{%d/%b/%Y:%H:%M:%S %z}}] protocol: {protocol} {request} duration: {duration} seconds

Which outputs:

[16/Jul/2018:12:04:07 +0200] protocol: "https" "GET /wp/ HTTP/1.1" duration: 0.134 seconds

With fully customizable access logs and an easier upstream debug, we design a more comfortable hosting platform. Monitoring and observing services on production at alwaysdata becomes painless.

This blog post is the last one about our new proxy’s features. We built our service for you and with you. Please help us again to improve it by giving us some feedback in comments to explain which features are missing for you!

jin yang handshake GIF by Silicon Valley @Giphy

Notes   [ + ]

1. stdout and stderr
2. Process IDentifier
]]> 0