[00:00.000 --> 00:22.000] Yeah sure check check check all right all right all right hello everyone first time actually [00:22.000 --> 00:27.720] I'm talking about this project on the conference so far as them here's at first the images [00:27.720 --> 00:32.720] that are generated with mid-journey so I'm going to talk about this self-hosting for [00:32.720 --> 00:38.960] non-coders somewhat of a click-by-title but we'll get there I have a question for you [00:38.960 --> 00:46.320] all did anyone try raise your hand if you tried hosting mastodon on your own a mastodon [00:46.320 --> 00:56.200] server all right all right we have a couple hands now keep your hand up only lower your [00:56.200 --> 01:11.320] hand if you think the process was easy or simple or enjoyable okay all right so this [01:11.320 --> 01:17.840] is the mastodon docs on how to host it this is just one page this is actually not even [01:17.840 --> 01:25.120] the hosting part this is just preparing the machine so out of this room here I guess three [01:25.120 --> 01:35.800] or four people tried that and I can understand them it's not easy and this doesn't this doesn't [01:35.800 --> 01:41.320] just apply to mastodon it applies to many apps actually that you would want to self-host [01:41.320 --> 01:53.560] many open source apps because apps are getting complex does this not work oh really should [01:53.560 --> 02:05.680] that right will there be does this work better okay all right so yeah so you saw the huge [02:05.680 --> 02:10.840] instruction you know what we want is everyone to be able to host mastodon because that's [02:10.840 --> 02:17.640] kind of the point of mastodon right it's decentralized there's Docker out there that [02:17.640 --> 02:25.960] many many projects use to simplify this process of hosting something maybe maybe we could host [02:25.960 --> 02:34.760] mastodon with Docker so this would be the Docker setup I guess doesn't look that much [02:34.760 --> 02:43.880] easier and I mean imagine I'm I assume that most of us here are technical people but imagine [02:43.880 --> 02:48.520] if you don't know how to use a command line that'll just be impossible you can forget [02:48.520 --> 02:55.640] about it you would use someone else's mastodon server so what if I tell you there is a way [02:55.640 --> 03:01.280] actually for people who don't even know how to use a command line to spin up a mastodon [03:01.280 --> 03:08.920] instance and this is how it would look like this gif is a bit sped up but it actually [03:08.920 --> 03:15.240] is close to the normal speed what's happening here is I'm entering a couple config values [03:15.240 --> 03:22.440] the mastodon is deployed on my machine anywhere I want where I have this gardens have mastodon [03:22.440 --> 03:29.120] is deployed streaming services deployed configured sidekick services deployed configured post [03:29.120 --> 03:36.520] grass databases deployed configured ready services deployed configured as you see master [03:36.520 --> 03:45.520] has a lot of services and we're done we have a mastodon instance now this would be the [03:45.520 --> 03:51.720] it's actually open on the internet I host a couple of those myself with this method [03:51.720 --> 03:59.720] and this would be the URL that I end up having and of course you can have it on your own [03:59.720 --> 04:05.960] domain if you own a domain you would have the mastodon let's say on your domain so the [04:05.960 --> 04:12.840] process without regard to speed me speeding up the gif took one minute forty four seconds [04:12.840 --> 04:19.600] I counted and you can do this locally on your own machine if you want you can do this in [04:19.600 --> 04:27.120] a cloud if you do this in a cloud that would be even a bit easier but we'll talk about [04:27.120 --> 04:34.120] it so this is called gardens it's an app it's a platform that I'm making it's open source [04:34.120 --> 04:42.920] under a gpl point three and it's not the only one not the only self hosting platform out [04:42.920 --> 04:49.040] there that really simplifies deployments actually this project is based on another one called [04:49.040 --> 04:55.200] cap rower I don't know if anyone in the room knows it okay it has a hundred million plus [04:55.200 --> 05:00.680] docker pools so a very established project it's out there for many years already it was [05:00.680 --> 05:07.960] called captain dug dug previously but cap rower was meant for hobbyists and kind of [05:07.960 --> 05:13.680] for testing our aim with gardens is to bring it more to the organizations so get it to [05:13.680 --> 05:19.320] a level where it's actually the stuff that you deploy like mastodon or anything is you [05:19.320 --> 05:27.200] can use it instead of a SAS service for example in an organizational setting so the technical [05:27.200 --> 05:34.400] part of this is roughly this it's a web app the web app actually you deploy on your own [05:34.400 --> 05:40.760] server so even the web app is on your own server we have a website for non technical [05:40.760 --> 05:45.840] people where they can connect their cloud account to deploy to their server but after [05:45.840 --> 05:53.920] they do that everything else happens on their machine this web app talks to docker API it [05:53.920 --> 05:59.840] uses docker compose which actually you cannot use the API so there is some processing there [05:59.840 --> 06:05.680] to deploy containers for these apps so for example like I was showing this various services [06:05.680 --> 06:11.920] that mastodon spins up they're all in separate containers and of course you can not just [06:11.920 --> 06:16.760] have mastodon deployed like this you can deploy jitsimid you can deploy wordpress I'm going [06:16.760 --> 06:25.080] to show a couple more examples and then we use nginx to show these apps on the web and [06:25.080 --> 06:34.280] allow the actual end user to interact with them now what I mentioned for non technical [06:34.280 --> 06:39.600] users right now we support digital ocean if let's say you don't know how to use a command [06:39.600 --> 06:47.320] line but you want to have gardens on your let's say VPS or your machine you just there's [06:47.320 --> 06:52.080] not all the flow you connect to digital ocean and then there's a no code process where you [06:52.080 --> 06:56.800] spin up gardens and then from gardens you can use it but there's also a local process [06:56.800 --> 07:04.280] where you just run one line in the CLI you pull basically the gardens container and [07:04.280 --> 07:12.760] then gardens does everything from there doesn't actually I mean it talks back to us to get [07:12.760 --> 07:19.760] the list of apps available but our end goal is for it not even to talk back to kind of [07:19.760 --> 07:26.080] really be isolated in your environment so these are just some examples of the apps we [07:26.080 --> 07:33.320] have in gardens there's really a lot of good open source products that are coming out recently [07:33.320 --> 07:40.320] of course there are established players like wordpress there is stuff to replace social [07:40.320 --> 07:46.240] media like peer to you here are just some examples of what those replace so of course [07:46.240 --> 07:51.200] with mastodon you can replace something like Twitter pen pot here at the bottom left you [07:51.200 --> 07:57.080] can replace figma they actually had the talk previously at the conference basero or no [07:57.080 --> 08:03.000] code B can replace air table juicy meat can replace zoom outlining an improved confidence [08:03.000 --> 08:07.840] and there's actually other alternatives there so you're you can choose whatever open source [08:07.840 --> 08:14.400] product you want to host we have about 130 apps a bit more available right now that you [08:14.400 --> 08:19.720] can sell host with one click but there is also an option to deploy your own apps or [08:19.720 --> 08:27.600] even connect to git lab let's say have a bit of CI CD going if you're more technical as [08:27.600 --> 08:34.280] I mentioned the process of spinning up those apps is based on docker compose mostly there [08:34.280 --> 08:41.760] are option to even spin up from tar archive and so on but this is like the main method [08:41.760 --> 08:47.960] yeah we do some processing of docker compose files that are taken from official repositories [08:47.960 --> 08:56.080] of these app developers and then we just spin this up for you so gardens is just one example [08:56.080 --> 09:02.800] it's I'm talking about it because I'm making it cap rower is what we forked because it's [09:02.800 --> 09:09.440] very reliable very nice service cool if I is a newer service similar to that the main [09:09.440 --> 09:16.200] difference I'd say is for the proxy we use engine x they use traffic and you know host [09:16.200 --> 09:21.160] is a bit different but it covers the same use case to self host stuff it's a bit different [09:21.160 --> 09:25.840] because it's a debut and distribution so you have that on kind of replace your operating [09:25.840 --> 09:32.960] system whereas gardens cap rower and qualified they are all apps that you can put right now [09:32.960 --> 09:39.680] on Ubuntu debut and I think on CentOS as well I actually got it working on macOS but that's [09:39.680 --> 09:50.760] more experimental so why do we even want to self host let's go back to that I'd say actually [09:50.760 --> 09:58.600] if we want software freedom which is I guess the point of open source in a lot of ways [09:58.600 --> 10:04.720] you have to be able to self host but as we can see from here you know just several people [10:04.720 --> 10:11.520] hosted mastodon let's say I imagine many more here use mastodon it's kind of like if you're [10:11.520 --> 10:17.520] not using this freedom or if you're not able to because you can't handle the technical [10:17.520 --> 10:24.760] side because it's too difficult that kind of defeats the purpose right so if you cannot [10:24.760 --> 10:32.000] host you don't really have freedom if you have it technically or formally let's say [10:32.000 --> 10:39.420] so I'd argue that this not having freedom is bad but also bad not just in a kind of [10:39.420 --> 10:44.600] ideological way but also in a competitive way if open source wants to be able to compete [10:44.600 --> 10:51.240] with all these SaaS apps out there because this is like something that open source has [10:51.240 --> 10:58.120] that proprietary apps just don't have and it's an unfair advantage I think I believe [10:58.120 --> 11:07.360] that right now organizations how they use it is they use proprietary SaaS by default [11:07.360 --> 11:13.320] they self host when they are really worried about privacy or there's some kind of sovereignty [11:13.320 --> 11:20.640] concerns or something they don't care about open source and how it should be is you self [11:20.640 --> 11:28.360] host instead of SaaS by default but then you choose a SaaS where it's too complex or you [11:28.360 --> 11:34.640] want the scale or there's some specific requirements or if you want to support developers because [11:34.640 --> 11:43.120] that's a one way they earn and they can financially support the development so to bring some numbers [11:43.120 --> 11:50.960] in there I've been hanging out on Reddit self-hosted subreddit and I found the statistics so for [11:50.960 --> 11:58.760] the past like seven years the number of people there skyrocketed to more than 200,000 people [11:58.760 --> 12:04.440] on the subreddit so it looks like people are interested actually in hosting their stuff [12:04.440 --> 12:12.360] but I also run a poll with 1,250 participants about that number where I found out that people [12:12.360 --> 12:19.000] on that subreddit they don't really self host anything business critical so to say or anything [12:19.000 --> 12:23.600] for their organization anything for productive use or at least not a lot of them so about [12:23.600 --> 12:29.920] only a hundred people self host let's say next cloud or something but most of them self [12:29.920 --> 12:36.440] host for media so let's say for movies or something or for personal use so maybe something [12:36.440 --> 12:44.040] for their smart home so that I think is a pity but I can understand that why people are not [12:44.040 --> 12:49.240] self hosting because it's complex like we discussed for organizations I mean because [12:49.240 --> 12:54.400] it's complex but also because of these issues you don't just want to spin up an app there's [12:54.400 --> 13:00.480] also a part that comes after you deploy which is about maintenance which is about making [13:00.480 --> 13:08.760] sure that your instance is secure and if you get a lot of users you also want to scale [13:08.760 --> 13:15.120] you want to have an option to scale so how we deal with that is for maintenance for each [13:15.120 --> 13:19.400] app for each service that I was showing you let's say for Macedon you can view logs in [13:19.400 --> 13:26.280] the graphical interface so you don't have to as attached to your instance to view logs [13:26.280 --> 13:35.000] we keep a version history we track analytics for your instance with net data so you can [13:35.000 --> 13:41.520] see let's say how much CPU is utilized how much RAM is utilized so you can kind of check [13:41.520 --> 13:47.240] the health and native that actually provides nice notifications so you can even get notifications [13:47.240 --> 13:55.440] where you want or have a web hook to get updated one let's say you're running out of CPU RAM [13:55.440 --> 14:02.680] for security we covered that with automatic SSL for all apps you can force it you can [14:02.680 --> 14:14.000] force HTTPS we have basic auth so that we do with let's encrypt for scalability actually [14:14.000 --> 14:18.880] that's the part I love the most if you have a lot of users you can scale either by adding [14:18.880 --> 14:24.960] more instances of the same app on the same machine and gardens will redistribute automatically [14:24.960 --> 14:31.800] the load or you can scale by adding more machines into a Docker swarm so we support Docker swarm [14:31.800 --> 14:39.280] this is the same for capro or so I'd say people want a self host but it's hard and we need [14:39.280 --> 14:46.680] to help them so otherwise they just use SAS like currently and this is one way to do it [14:46.680 --> 14:56.800] you can help this effort by if you're a developer maintaining Docker compose files or documentation [14:56.800 --> 15:04.080] just a way to self host for your application if you're a sysadmin or DevOps you can think [15:04.080 --> 15:08.720] about providing a platform like this to your organization so that people in your organization [15:08.720 --> 15:17.920] can spend something up without having to bother you and you can everyone here of course should [15:17.920 --> 15:23.800] use open source instead of SAS and you should try self hosting if it's if you find self [15:23.800 --> 15:29.440] hosting hard you can check out some of those self hosting platforms and of course host [15:29.440 --> 15:36.040] not on AWS or something but you can use some of those posters cloud 68 been giving a talk [15:36.040 --> 15:43.880] here a bit earlier chat on says a French network of good hosters liberal host is another one [15:43.880 --> 16:10.080] so look at other hosting solutions thank you and yeah have a good rest of the conference.