 So hello, my name is Sarah Klibski, I have a little project to show, which is called Puffin. We have a hosting for average users, I hope. So here it's about making distribution simpler for my user. So I was wondering how to start, and actually I would like to start from maybe conventionally a bit. Let's start with a demo. And then I will give you some theory, I mean some boring stuff, how it works. So, okay, so how to do a demo like this. Okay, so this is Puffin, this is our experimental application, right? It's a web app running on my server. So the first thing you can take a look is to learn a bit more about the application. As you see, it's still simple, but I will show you. So you can read some basic stuff. So, for example, getting started, we should first register. So let's register. So, test six, let's say. Well, email address test six at LumChile.net. Actually, I want, sorry, I don't see anything. Oops, that's good. Oops, too much French keyboard. Oh, good. It's actually not important. Wow, I put my name here and password. Well, already it's chosen for me. Okay, I don't know why. I don't know what it is, actually. But I just wanted to show you if I register. Yeah, so it will send me an email to register to the configurator. I won't open the email account. I will just log into the newly created user for FOSDEM. So let's look into this one. So after looking in, I'm able to actually install those apps. So what I wanted to show you is I will install a simple blog. So this is Ghost. So the first thing you can see, okay, there's a screenshot. The first thing, a couple of things. I mean, the resolution is a bit different than I'm used to. Sorry, I'm a bit surprised what's going on here. But the first interesting thing you can do is you can change the domain DNS, I mean, to point to your application. I actually already changed it, so I put it here. It's not fully automated. You need a wild card on your domain. Or by default, it uses puffing rocks because you can also use it. So let's not change it. And I can just run it. So yeah, it will take a minute. As you see, I'll see how long it takes. I haven't started on this user, I think. So yeah, it's actually what's happening here. It's starting a container, our bunch of containers to run this app on my server. For now, it's just a single machine. But I will show you why it's pretty good. Once we get here, I will show you that actually this app will be available for the network. So as you see, the idea is to keep it one click, basically. So you click and you're installing an app. So the idea is to keep it similar to the familiar for users to look like a mobile app, basically, or mobile app on the phone. You can see it better on a bigger screen. So I can open my app. So this is a ghost, right, running. You can access it also. I can post something. I wonder how much time do I have still? Are we on time? Well, pretty much. Yes. So I need to set up this ghost first. So I need to create my first account. So I can say fos them at, well, this is my email. Now, oh my God. Sorry, I don't know why I'm doing this. Well, fos them passwords. Let's keep it secret. I think there's only one password now. Do I need to repeat it? Yeah. Block title, OK. Test, one, two, three. Say what's your password? No. No, this is my main password. This is my root password, actually. Oh my God. No, no, no. No, I'll do this later. I don't have a team. Unless you want to be invited. So I can create my blog, right? It's blog post. I can say hello. Let's say, sorry, I should put it both on my screen on this. It's a bit hard. Hello, fos them, right? And I can save it. I can publish it, publish now, publish now. So, yeah, so technically, I mean, so I have a blog, right? It's available. I have my first blog post. So the idea is this. I mean, to allow like normal users without, you see, it's pretty simple. Actually, the best would be without any configuration. But there's a bit of configuration. It can be automated, too. But, yeah. So this is my blog. So let's go back to Puffin. So I can see, as you see, it's very, very simple. But I have my application. So this is my GoSet. It's currently running. I can run some more applications. What else I wanted to show you here? Actually, this is also interesting. You can add a new application. I mean, currently it works. This is not user-friendly. This is a GitHub pool still. So, yeah. But it needs to be improved, of course. So it should be easy to add your own applications. There's some trick to it. But I mean, I will show you later. So this is a demo. Thank you. So we can go back to the presentation. So I will tell you maybe a bit what you just saw, how it works, right? What is it? So what is it? So what is Puffin? So what is Puffin? So I think there are three. We can say there are three parts to Puffin. There is the platform that actually is responsible for managing the containers, managing the applications, remembering which applications running, setting up some basic stuff. Because actually, if I showed you actually the email, for example, if I register my user, the emailing works. So I receive an email. There are some basic services that I provide. But actually, the platform is actually nothing more than there's a Docker Compose. It just calls the Docker Compose at some point. Because applications are actually directories. So the next part of Puffin is application catalog. It's curated. So the idea is to keep it interesting. I mean, only curated in a sense. I mean, well, anyone can contribute, actually. It's actually not completely true. But the idea is in each application, I just capture how to install it. So basically, if I want to install a blog or a forum software, I go to the website and I read the instructions how to install. I need the MySQL. I need this. And with this, I capture it in a Docker Compose file. So this is the second part. Actually, all of them are independent. So platform, how to run those containers, those applications, the application themselves, the catalog. Actually, you can disconnect them. You can use just Docker Compose pretty much without using Puffin. And the first part is the hosting platform. So you can actually go to Puffin Rocks and install it and then run it. So the idea, well, I will show you later, but yeah. So this is the centralized service, actually. This is the centralized part of the centralized thing. But actually, anyone can run their own platform. It's very easy. But there's also hosted platform for users who don't want to bother installing anything, managing the server. So those are the three parts I want to talk about. So now maybe a bit how it works. So quickly, it's written in Python. It's using Docker, of course. It's using Docker Compose. I will show you how the application looks like. It's pretty much Docker Compose is the most important one. There's a reverse proxy because I have a bunch of containers running on the server. So the request needs to be rooted to them somehow. So I currently use Nginx again. It's containerized. You can use anything. I can use anything. I'll probably switch to HEE proxy. And there is, for example, email prospects relay. So this is actually a little container that forwards to a real email server this time. Because I don't want to be sending emails from my own server because I will be probably blocked. I need to be careful about this. So I wanted to show you another quick, maybe not a demo, but how the application looks like. So it's a bit cut. Oh, yes. Maybe I'll just double click. No. OK. Let's do it this way. So this is my catalog, right? Apps. So I can show you Rocket Chat, for example. So all I have here is Docker Compose, Read Me, and some pictures. So Docker Compose. Docker Compose. Just quickly off. It's too big. Sorry. I was trying on a smaller screen. What? OK. It also resizes this. Yeah. So what you see here is actually Docker Compose, Read Version 2. There are two services, Main and DB. What is interesting here, I mean, what is different from standard Docker Compose? I need to have some environment variables, and virtual ports to tell the proxy how to access the application. Then this is a standard application setup, actually. This application is pretty good because it allows me to configure itself via environment variables. If it's not available, I can generate a config file at startup, for example, from the environment rates. And I set up root URL. So technically, I can run Docker Compose this, and it will run my rocket chats. Another funny thing here is that I have three networks, because this application has its own network to be separate from the others. And I have access to the front, so to the proxy, and back to the email, and other services provided by the platform, eventually. So yeah, some other services in this kind of private cloud. And of course, I store data in volumes. I don't want to lose my data. So this is the second container database, pretty much standard. And this is the other part is the readme file. It's a markdown. It's nothing else than a markdown. So really, are you sure? OK, yes, you're right. OK, the most funny part is, OK, why it rocks? Well, it actually doesn't rock. It's just dot rocks. It doesn't rock yet. But I hope to make it rock. Yes, because it's decentralized. You can run it. You can run your own. It's simple for a user and for developer. So a user can, as you see, one click install. And for developer, it's easy to add the app. It's pretty friendly. It's free asset freedom. And it's free also as a beer at the moment. But actually, you can run thousands of containers on a simple server that costs 15 euros a month. So I think you can pretty much keep it free. For example, run a platform for your friends. I haven't seen any problems. I have only one server now and pay 15 euros for it. OK, a bit about future changes. It's still an alpha. I delete data. Yes, my alarm. It's more like an egg than a puffin. Right now, security is a big issue here. It's multi-tenancy. So I have several containers running from different people on the same machine. This is still unsolved problem. You can escape the container, but I hope it will change. I'm pretty sure that you will be able to run containers somewhere in the cloud or on your servers. And they will be separated. I don't know. I'm hopeful it will be like VMs at some point. I know they are not VMs. Yeah, and a couple other things to do. So yes, if you want to contribute first, you can try it at PuffinRug. Just install. Dock and Compose app is very easy to start up. And then there are a couple of links if you're interested. One thing I want to leave you with is that the idea here is really to make distribution simpler. So give free software to the users much easier than it doesn't have to be complicated. It's going to be as simple as software as a service, as Facebook. So you can install the Aspera like this or as a blog. OK, thank you. No time for questions.