 Amanda. Hi. How's it going? It's going good. Can't complain. I mean, I mean, I could fresh Friday morning. Yeah, fresh. I don't know. It's early. All crispy. Sure. Fine, fresh fall, Friday. Yeah. There we go. You can do this all day. Yeah. So full disclosure for anyone who's watching this, I've been out for a couple of days and I'm back and we are going to try and talk about HedgeDock and maybe make an installer today. We're going to at least start. We're going to at least start. There has been at least one stream where I was able to basically start and finish an installer on a stream or like mostly. But that was for. I want to say it was for own cast. So we'll see if it's as simple as own cast. It's not. We get a part two next week and now we already know what we're doing. Yes, the content calendar fills itself out. Beautiful. Yes. So, but before we dig into that, so what I'm planning to do is kind of we're going to look at Hedge. We'll talk a little bit about what HedgeDock is in a second. We're going to look at our install of HedgeDock that we use in Reclaim EdTech for a little bit. I think Amanda and I get the most use out of it. Have used it for like proposal conference, proposal planning a little bit. It's a nice little tool. And then I'm going to see what I can take from that install that already exists and drop it into my Docker template, basically, that I have. Sound good? Sweet. I don't know. Do you want to, you know, Amanda, do you want to talk about HedgeDock a little bit and like what it is? How is my audio? Good. You're fine. OK. Just asking because for those watching, because I pulled this up on Firefox, which I love, but it tends to not do very well with my streaming audio and video audio. So hopefully it stays OK. Yeah, so HedgeDock, we really like HedgeDock. We've been using it for a little while, just kind of casually. And it's like a good alternative to Google Docs. And it's mainly for writing collaborative notes and markdown. We've actually done a couple of formal projects with it as a team where we've collaborated on learning modules for for a school. And I thought that was really great. I thought it went really well. I know it was one of Pilots' first times using markdown. And it, yeah, but it went I thought it went really well. And we are interested in kind of further exploring HedgeDock as an alternative for open collaboration. Nothing wrong with Google Docs. You know, if you want to use that, that's totally fine. But it can be fun to use something that's a little bit different. Yeah. And we're. You know, in context of the upcoming open publishing ecosystems, flex course that we're doing next month, officially dating this stream. But that's fine. The I think we are planning. We're talking planning to talk a little bit about HedgeDock and sort of the role that it can play, which is, you know, you're comparing it to Google Docs, which is extremely true. I think it's very cool that markdown is that collaborative editor. But I also think. I don't know, I just I like it as Google Docs, but also you can publish things. That's yeah. Yeah, that's what I was going to say to kind of add on to everything that Amanda said and pilot you too. Like it's an open tool, which I love. But even on like a if you're looking at this from a like, I don't care if it's open at all, I think the great strength of it is that it, you know, is marked down. So markdown is super portable in that everything about the document is just plain text. So if you've ever had the wonderful experience of writing something collaboratively in Google Docs and then trying to copy and paste it into some other thing, be it WordPress, be it actually WordPress does tend to do a decent job of preserving formatting specifically from Google Docs and other weird like Word Docs and stuff. But in my experience, that's not a given. Some some but but if you've ever had that experience of trying to write something in a platform like Google Docs and put it someplace else, you know, there's a lot of manual cleanup, right, of everything besides the literal words on the page. And that's also a lot of that with Markdown because portable. So things that support Markdown generally support it the same way. Yeah. Also, I'm now thinking about Amanda, you mentioned that project that we did where we were writing course. We were working with a school to develop course materials. And full disclosure, this was my week to write all the tweets. So I talked HedgeDoc up specifically also as a way to do like wikis and documentation, which means being able to build out multiple Markdown files that all connect to each other and crosslink. And you can hyperlink to them to different sections within and stuff like that. And, you know, then, you know, it's Markdown, so you can pick it up, put it anywhere. But it also means that it's easier to build that sort of networked set of files that all connect and go together. And I'm now thinking through, wow, that's just not something you can do with Google Docs without adding a lot of extra, just elbow grease on your hand. Yeah, you can, you know, you can link to Google Docs, obviously, like they get their own URLs and you can even do the publish feature with them, which HedgeDoc has something similar. You can publish a Markdown file and that link will have a very specific strip down interface that offers no editing controls. Yeah, but you're you're somewhat limited in in what you can actually do with the publishing features on Google Docs. Like there are like one thing you can do because this because Markdown translates directly to HTML. You can do a lot more of like deep linking into other things and images that aren't even hosted on your HedgeDoc. You can embed, like, videos in it in a really clean way. Actually, I think Google Docs does do that now with YouTube shocker. But but probably but not as cleanly with other things that aren't Google properties. So yeah, peer tube, it wouldn't work. At least not the last time I tried, which was actually pretty recently like a month ago or so. But you can't just drop HTML into a into a Google Doc and expect it to render. That's not how that works. So the other thing I really like about HedgeDoc is, you know, it is just a pretty simple tool. Like it does this one thing. It does collaborative Markdown editing really well. And it's a pretty understandable interface. Like I really like Markdown and I've been like messing around with writing notes. I've been writing my notes in Markdown since college. But it's not easy to learn Markdown if you're not like if you're brand new to it. Like it's not as bad as it's not programming or anything. But like, if you're not used to it, it can be confusing. And I think Markdown in HedgeDoc is really nice because you get you can you can write it the way you normally would, which is completely typed like from the keyboard. But you have nice it's got a nice interface that allows you to really easily insert pre-formatted snippets of Markdown for images and things like that. And then you get a nice preview on the other side and you can be sure that it looks the way you're expecting it to. Yeah, I'm also thinking about I think sort of very entry level Markdown stuff of like, here's how you bolt something, here's how you italicize can be it's not intuitive, but once you you can look up a style guide relatively easily and that can you can go, oh, all right. So this is relatively consistent. But I'm thinking of tables in Markdown manually. Tables are not fun. My primary experiences with Markdown outside of my work at Reclaim are with a a open source ish tool that lets you make formatted pages that look like they came out of a D&D handbook for if you want to make your own homebrew. You have Markdown character sheets. Is that what you're telling me? They're not character sheets. It's like if you wanted to homebrew a subclass or a magic item. It's you can plug in the text that you've made and format it with Markdown and it will take that and turn it into it's got all the CSS. The fonts and everything and it's really nice because you don't have to do any of the design work and you have to figure out the fonts and anything. But there you know how many tables are in a D&D manual? Many, yes. Yeah, yeah. At some point, we should have a separate conversation about open open TTRPG tools and resources pilot. That would be a cool thing. I've been starting to play with recently. But yeah, you were saying that not all these streams have to be tech focused like we did scary stories. We'll make them tech focused anyway. But yes, we'll get there. Yeah, so I think we should probably dive right into it because I'm looking at the clock. We got about 45 minutes and the clock is ticking on my ability to create an installer. So I did want to just show really quick in case we are completely in case I am completely unsuccessful in getting anything working here. This is what HedgeDoc is supposed to look like. So let me actually sign out. That's what it looks like from a internal like interface for getting to things. When you publish it, it'll look different. Yeah, we have an install at docs.reclaimed.tech. We've had it for a while now. I think like a year and a half or maybe because we were using it to work on the domains work with SNC on domains camp. Yes. So one of the cool things I really like about it is it is a Docker based application. It was pretty simple for me to get up and running and it has really nice documentation. So it has a basic install guide, but then this configuration guide had maybe this isn't. Yes. So all of these configuration things, it's got a whole table, speaking of tables, of like how to configure different options and where you do them, but depending on what install method you chose, we're using the Docker method. So we'll be using these environment variables, which is super nice because I can add them and I'll show where they go in as we go further. But I can add them to do things like enable specific functionality out of the box, basically. One of the things I was able to do on our install really easily was just turn on GitHub as the authentication method. So it's not really technically single sign on. It's it's called OAuth. But when we use ours at Reclaim, you just sign in via GitHub. And I'm already signed into my GitHub account, so that just that just worked. But that's super cool. We don't have to have separate passwords for everything. I haven't played with all of the different authentication methods, but it does support. I believe it supports like Google and Microsoft accounts as well. I believe you can limit the domain it is using, which I should probably look at doing because now that I've said this, I've just mentioned that, you know, technically anyone can log into our thing, but you only can look at the docs that you own. And I believe it even supports SAML for like proper single sign on support. So that's not something I've tried yet, but and we won't get to today, but that is cool because I could see this. One of the things I saw the first time I saw HedgeDoc was at, I believe, OER 19 Cross Domains Conference, which was online and I attend this session where there was a faculty member talking about how they use HedgeDoc at their institution. And it was sort of the whole institution used it for various things. They had it hooked up to their single sign on and stuff like that. So but this is kind of what it looks like. Like if I look at this test note, yeah. I was like, I don't know what's in this test note, but yes, it's the one that has a porcupine on it. But or a hedgehog. Yeah, obviously. But, you know, this is what the basic interface looks like. If I click on this this panel here, this is the editing, right? So I can go here and this is a test and my text shows up. I get these nice buttons and toolbars for uploading images and linking to things and making numbered or bulleted lists. Checkboxes. It's it's pretty slick, honestly, to you. As far as a markdown editor goes, I think it's pretty simple. There's even commenting, which is kind of interesting because it will show up like comments will show up in this specific format. Wait, I think I might have used that wrong. I'm not yet 100 percent sure. I'm supposed to be using it's not hashed eggs. Is it it's cool? You can put little properties in here. This is me. That's like footnotes and stuff. That's yeah, it's for like inline commenting. Kind of kind of Google Doc style. Not something I've used a lot, obviously, but that's something I want to explore a little bit more, see how that works. But yeah, you get this nice little editor. You can also full screen it if you just want to look at the text you're writing. So you've got these kind of three interfaces. It does dynamic table of content. So based on the headings, if I put another like a level two heading, another heading, my cat has decided to interfere with my microphone. And so if I make this, whoops, I go back to the preview here, you get this little table of contents on the right side, which I love. The publish button basically looks like the preview, but you know, it's completely stripped down. I also love that HedgeDoc lets you get these excellent, simple URLs. So when you make, this is an option you can turn on, but when you make a doc, it will by default generate a random, you know, URL that's like somewhat secure and hard to guess. But if you don't need that security and you want nice URLs, I can just go to like docs.reclaimed.tech slash. This is my note and hit enter. And that's a brand new note instantly. Oh, like in Jitsi. Yes, it works the same way. Yep. And so I can start writing and I think by default, it's going to be private. So if everyone on the stream was trying to watch this right, look at this right now, you're not going to be able to view it. But if I switch this to editable or, you know, even publish it, actually, I could just do that too. Then that should be, I don't know, I think I need to make it more. I have to actually edit the permissions here. I'm just realizing also that we spent the first 10 minutes of this stream doing something that we're going to do again in a month, which is talking about why you might want to use Hedge Dock. But at that time, we'll spend like 45 minutes on it and we can. Yeah. Yeah. I mean, we have to give some context setting here. And I also am I want to have this be valuable if I completely fail at the rest of the technical stuff here. So just to pull back that curtain, if the installer doesn't go well over the next 30, 40 minutes, we'll learn something. It'll be fun. Yeah. So that's what Hedge Dock looks like. What I'm going to do, I'm going to pull up our dashboard in for it in Reclaim Cloud really quick. And I'm not going to go into a ton of detail here, but I currently we have this set up in a Docker node and a load balancer in front of it to handle HTTPS. That is not how I typically do installers for installers that we make on Reclaim Cloud. My goal is to make it so that it is one click and you get an HTTPS certificate out of the box. Anyone should be able to go to the marketplace and install Ghost or even Macedon and like click a button and you have something working basically. That's the that's the bare minimum for our installer. So if I can't get to that, we won't publish it. I'm pretty confident I can based on Hedge Dock's documentation being pretty good and us having this working in the way that I do. But if I go in here, I can look at there's a basically an uploads folder for uploads of images and stuff that actually looks like it's not being used. So that's interesting. And there's a single Docker compose file that has some basic stuff on our database passers in there. So that's cool and probably we'll change that later. And some environment variables and that's basically it. So now that I've exposed our database password on stream, I will have to make sure that I change that later. So I think this happens every third stream. You normally I'm using it with something that doesn't matter and I delete after this is not one of those times. Although I think everything we have in Hedge Dock is probably elsewhere too. But anyway, I don't want to delete our Hedge Dock stuff. So what I'm going to do is actually copy this Docker compose file. And I'm actually going to just save this. You can't see this right now because I'm in a different window that I'm not sharing at the moment. But I'm just going to save this to my desktop. So I have it while we're working on the thing. Laughing Galileo in the chat just said more relevant is your client's secret. Yeah, that I can change to, though, that's our GitHub stuff. So but yeah, so that's what I'm going to start from. That I'll definitely have to change. You can tell we rehearse these. Yeah, really extra prepared. Yeah, one second. Dead air. All right. Let's let Amanda, let's vamp what we got. Um, I can get a cane and top hat out. Oh, yeah. Yeah, sorry. I'm just trying to make sure I'm cleaning up this reference file I have so I don't have any more stuff in there. Also, if you want to reduce the times you drop them on screen, maybe use an on file for these secrets. Thank you, which is which is what we do for the installer to be fair. The problem with this is I haven't looked at this configuration in a year and a half and a year and a half ago, I didn't know about that. So but we are growing every day and that's what matters. Yeah, so we're going to do this with some trust that I set this up properly a long time ago and I probably didn't. And I will I can reset my client ID and secret later. Just going to make a little to-do list. Yeah. Sidebar while Taylor's doing this regarding making notes in Markdown. I think all three of us at this point use obsidian, which is very cool and I like it. And that's sort of what's gotten me to understand how to use Markdown a little bit more and how to use it to structure docs, which is great. I'm also maybe I have one track mind, but I'm now thinking about again, tabletop games. And I was already thinking about the possibility of using obsidian to organize my notes because for an upcoming campaign, we're going to do that's got a strong mystery component because the cross linking and obsidian now has a cool feature called the canvas that you can use to sort of create a mystery board where everything you can see, you can point the connections and make the arrows and things like that, like a red string board. But now I'm thinking about also if I ever wanted to do like a. Worldbuilding style wiki or. I guess publishing online open tabletop game resource rules, you could you could do that pretty easily. And then you draft it all in obsidian or something like that. I mean, you can draft it all straight and hedge dock to. But you could pull notes pretty easily. This is fully full disclosure. This is just me covering for time by getting to rant about something that is tangentially related to the stream. But if anyone else out there is into this kind of thing. Steal my ideas, they're open and free. Yeah, yeah, OK, so we are good. We are good. What I'm going to do now is I'm going to actually switch over to my own Reclaim Cloud account and we're going to get started from there. So what I'm going to do to start here is make a Docker environment that I'll be working from and call it hedge duck installer for now doesn't really matter what region and actually I'm going to do this. I'm going to make an environment group for this. So I can have a nice clean area to look at. And there we go. So while that runs, I'm going to get kind of started with a few other things here. What I need to do is look at our current Docker compose set up inside of our current Docker compose set up for it and kind of adapt that to this template I have. And that is this Docker JPS starter thing that I made. Now, what this is is it's just a very basic Docker compose file. It has some automatic proxying stuff using a few different containers. I found called engine engine X proxy ACME companion. Basically, it's a really cool project where you can kind of drop in drop it into a Docker project and just get automatic HTTPS stuff happening. And it's pretty pretty nice that that works as simple as it does. This basic example just has a patchy running so it's nothing. So basically, we will take a patchy out of it and put in our HedgeDock instance into this file. That ENV is where we can set up some our configuration options for various things. And the manifest is what is the actual installer part. So this part we may not actually get to today, but this is the part that I will edit to make the reclaim cloud automation happen for the installer. So basically, step one is get HedgeDock working within this template. And then step two is I take the manifest file and make it deploy this template as we want. One thing I like to start with is usually start, I will typically just start things working with that Docker compose file, like I said. And then I usually at that point will make its own GitHub repository so I can kind of have a nice spot to work in. So we'll get there. But for now, I can actually just clone this starter just to have a place to work from or even honestly, yeah, I'll just clone the starter for now. So now that my Docker compose my Docker environment, I should say is set up here. I can clone that Git repository. Got to copy it. And I don't actually need to use this as like a Git repo. So it's just a simple way for me to download all those files. I'm going to rename the folder and call it HedgeDock just for simplicity. And we don't need to read me. We also don't need manifest file either. And finally, I don't, this isn't actually going to be used as a real Git repository. So I'm going to get rid of the Git folder because I don't need that either. Really just need these two files. So yeah, so now what I can do is go into my config, my file manager basically and go into the root folder and HedgeDock. And yeah, so I will go right into the Docker compose file here. And I can start by just losing most of this Apache environment in just a second here. So Docker compose files are broken to services basically most of the time. And this nginx proxy and let's encrypt, like I said, that's the stuff that's making HTTPS work basically. And Apache, we're going to get rid of here. But I'm going to, in a second, but I'm going to actually leave it there for now because it's a good reference for like what sort of environment variables I'm going to need and how they should work. So I'm going to take my stuff I found from the Docker compose file from HedgeDock and I'm going to paste that in here in a second. So this is our basic stuff here. If I go back to the HedgeDock documentation, I should find, I think they also have a, yeah, they also have one too. So maybe I should start from there. That makes some sense to me. They've got a database service. Okay, that makes sense. They have the app and then they have two volumes to find as well where your actual stuff gets stored. That should go at the bottom of the file here in the volume section. And yeah, so from here, we're going to need to do a couple of things. So right now we're using just completely insecure passwords, which is fine for right now, but we'll want to change that later. That shows up in more than one place. So a Postgres password environment variable is here and also the environment here. The command domain is going to be, for the moment, local or sorry, currently it's set to local host, but we actually are going to want to change that to where the thing is running. So I'm going to copy that link from the environment here, get rid of the HTTPS around it. Okay, Taylor, no pressure, but I think a HedgeDock dev is in the chat. Interesting. Someone just, Shio-Garath just mentioned that you can do pull requests if we end up with a once click installer. Oh yeah, that's cool. Yeah, the community installation method's cool. Yeah, I totally will do that once this is ready. Nothing like me improvising and learning on a stream where folks watching know a lot more than I do about this stuff. That's cool. Love that. We get real-time feedback and we can always adjust. Yes. I'm going to keep things as simple as possible for now. There are some settings that I think for our installer, I will want to enable like allowing, I really like the allow free URL option that there's, like I said, there's a bunch of configuration options in HedgeDock that we can set, but for the purposes of today, I'm going to keep things basically as simple as possible. And then I'll tweak things over time. So going back here and port. We don't want to add the port to the URL. So we'll go false. We're going to run HedgeDock on port 80 because we will proxy port 80 and into HTTPS using our proxy setup that I'll get to. We've got restart always. That's fine. Depends on database. I'm using Docker compose version two. So I'm not 100% sure if I can leave that like that or not. Okay. So then the other thing I need to do here is I need to take some of these environment variables from the Apache service that we're not going to be using anymore. And I need to spit them into this section as well. Sorry. I'll be back in a second then. Sure. Okay. A lot of me looking at stuff here. So from there, I'm going to need to, in my environment file for now, it's going to be really just my email address and domain name for Let's Encrypt. So the domain name is again going to be just the domain that this lives on. And so for now, it'll be this one. And I email, reclaim. One thing that's nice is because I'm using this domain variable, I can actually reuse that multiple places. So I can go in here and set this. That's the same there. This looks like this is not format. Oh, I'm mixing my formatting here. Well, well, that may be a problem we'll have to see. All right. And now I'm going to fire it up and we're going to look at errors because it will probably be some, at least some. I'm sure this is not going to work right out of the box. So I'm going to do a Docker compose up dash D and Docker compose logs, which is going to let me see the logs that they happen. Is invalid because service Apache environment. Oh, yeah. I forgot to delete my Apache service. Let's do that again. There we go. Valid, invalid type, it should be a string. Okay. Oh, Amanda. Yeah. Amanda just messaged me something came up. So. Yeah, no problem. Yeah, that's fine. All righty. Shoot. I already used up all my table top gaming material. You're fine. I think I had this a little bit backwards on my environment variables for how far as how that should be set up. Okay. Yeah. So I don't know why, but in my notes, I had these as colons instead of equal science. Cool. So it's at least a valid compose file. And that doesn't mean it's a working one, but it is formatted in a valid way. So right now it's pulling the containers. And then we're going to be looking at the logs here and seeing what's happened. So, okay. Post is already in use by another container. Cannot start service driver field. Oh yeah. Okay. I've got a couple problems here. So if I go back to my starter one, I'm doing this wrong with the way I'm mapping ports. So the way this should work is the only container that gets the port option needs to be the proxy ones. So HedgeDoc by default is going to be listening on port 3000. So what I need to actually do is set my virtual port to 3000 here and delete this port section. And then I need to take things down, which in case they're still running. And then I'm going to fire things back up. Okay. So it issued a certificate already. So that's promising. So pilot, I don't know how much you've ever done with Dr. Compose, but the when you're looking at logs like I am right now, it's going to be broken out by service. And those services match with the file here. So these database service, app service, Nginx proxy service, let's encrypt service, those are the four. And I can name them whatever I want, right? But that matches up with these logging and it's even color coded, which is super nice. So what I can see here is that it looks at least like things might be working because we're already getting traffic. Question in the chat from Jim. Does it need to run over 3000, 3000? Or can you run it or can you make it 8080? Yeah. So it does need to run over. It's kind of complicated. It is technically running over the normal 80 and 443 ports because we're proxying it. That is already happening. Hedge doc, it looks like internally the port. And this probably could be changed with a configuration option in Hedge doc. But by default, Hedge doc listens on port 3000. And so what I had to do is go into my thing and tell my proxying service here, hey, the port you're looking for is 3000. That's this virtual port setting. So I've just told my proxy traffic on 80 and 443 to 3000. So that's easier than me also telling Hedge doc to work on a different port. But either way could work. If I ran Hedge doc on port 80, say it has a, I'm sure it has an option probably configuration. Yeah, here. Well, that's the database port, command port. So you could tell Hedge doc, hey, run on port 80 with this command underscore port option. But then I would still have to tell in this setting, I'd have to set that to 80. So it's sort of just like two steps to accomplish the same thing. So it is technically working, although it looks like some images may not be secure, which I don't know, 100%. If they're being, I mean, are they going into the file? You said earlier that that one file, that folder for storing images wasn't. That's for uploaded images. That's different. But that's the thing is if these are being embedded, are they being embedded? No, no, that folder's for user uploaded images, like when you're making notes and stuff. So what's happening here is probably Hedge doc does not know that it's loading over a gtps. And so there's probably an option to tell it that protocol use. So it says set to use SSL protocol for resources path. That's probably what I want. That could set that to true. Sugarat says we're missing two variables for full htps support. Yeah, so I'm assuming I want the protocol used one. I could use SSL. Well, okay. I don't 100% know if I want this because what I don't want is Hedge doc to... Okay, we'll try that. We're going to start one at a time. Strings are experiment time. This is the laboratory. The problem is normally at least the way I'm used to setting these things up, the application that we are proxying, in this case, Hedge doc, wants to be running insecurely to talk to the proxy. And then the proxy, but yeah. So, but this does vary depending on application. So it's, we can, we can mess with it. Use SSL is, I guess we'll start with that. We'll just start with use SSL. Whoops, wrong thing. Oh, I just realized that that doesn't have a environment variable. So maybe not. We'll start with that one. And I forgot already that I could be looking at my reference from before. Yes. On my other one, I have command protocol use SSL set to true. Okay, cool. We are going to. Maybe we don't do this now because we're focusing on the installer, but there are docs for a reverse proxy. Yeah, but that's a manual reverse proxy. So basically reverse proxying is tricky, especially if you're not comfortable with it. There's a lot of different ways to run reverse proxies to do SSL. Reclaim cloud itself. We do things typically in two ways. You can either have a separate container running as a reverse proxy and then configure it, or we're doing what I do, which is I'm going to add my reverse proxying in the way I have it. And the reason I do it this way is it is sort of bulletproof in that users who use our one click installer don't need to know anything about it. It just kind of works. And when it doesn't have a certificate, it checks. And if it doesn't find one, it'll issue one. It's all automated. So this container that I'm using, this nginx proxy container and this companion are basically magic. They just work and they're beautiful. I love them. And so they make my life a lot easier in terms of making these installers because they handle a lot of this, but crucially for folks using it, it just sort of works too. So it looks like I may have to clear cash, but it looks like that did not completely fix my images issue here. That may require some further diagnosis, which I can definitely do, but I don't want to spend a ton of time diagnosing that at this moment. I'm sure I need to use a different, yeah, I'm sure I need to use another environment variable to tell it. Oh, oh, I typed it wrong. Hey, man protocol. Oh, it's just us use SSL. I copied the one line here. Okay. Whoops. All right. Also mentioning that the variables for reverse proxy or variables are mentioned in the reverse proxy guide for anyone who's got it following along later. There's proxy. Band domain, command host. Yeah. Okay. Import. Cool. Cool. Yeah. I don't think we're going to need all of those, but I again, this is one of those things where I will spend some time reviewing that to make sure that the installer is published once we install it is polished before we publish it. But for now, we're going for minimum viable here. There we go. That fixed it. So thanks for catching my typo. Okay. So this is technically working. There is some need, you know, like right now we have, you can sign up for email. I'm sure email is probably not innate, like working by default. And it technically takes public it is. No, no, no, no. Sorry. Yeah. There you go. I would be surprised if that works out of the box. But that, and that's okay. But what I'll be able to do is have a default admin command created when I do my real installer. But for right now, what I want to do in the last 10 minutes we have here, is see if what I can, if I can take this and make this into a basic installer. Just for the moment. Note in the chat that HedgeDoc doesn't send out emails. So it doesn't actually. Public registration. Okay. Okay. Yeah, cool. So that's probably one of those things that I would, one of those things that I would set in our documentation of say like by default registration is open on HedgeDoc. Yeah, it's been a while since I set up a new HedgeDoc. And I think what I did on ours before I set up the GitHub integration was I just had registration open and I was like, Hey, everybody go sign up and I'm going to close it when we're done because I didn't want ours to be a public instance. But the cool thing is in the documentation they cover all of that how to change that. So you can go in here and then the, yeah, I believe it was mostly in this HedgeDoc basic section. They have things like maybe not that section. Location, web security, probably users and privileges and login methods, but they have very meticulously documented all of these configuration options. So basically, if you wanted to say set to disable set to allow anonymous usage, which is by default true, and that's what ours is set to, you would set this in either your environment section or in a .env file. So what I will probably do, and the way we do this for a lot of other installers is I will go in and set some defaults that I think will work for people and put that in the .env file in its own section. So I like to do this, say like HedgeDoc configuration and I'll set a bunch of values here. And then when we have the installer published and documented, we can say, hey, you may want to look at these settings and you can change the values and hit save and restart. And you know, they'll be applied. And then we can also link to the HedgeDoc configuration page itself and say, and if you're looking for more settings, there are a lot more settings, paste the value into this file and set it to false or true or whatever example it has. That's kind of how I typically do that. Again, for the moment, I'm going to leave that just completely default for now. Yeah. And for posterity, in case we got a bunch of people in the chat who actually seem to have not known who we are previously, which is really cool. But for posterity, we have a knowledge base that will have documentation on how to use the one-click installer and do all this config that Taylor's talking about. Yeah. Yeah. This is one of those things where typically, I think we have a handful of people watching from the own cast directory, which is cool. Yes. But typically, we are talking to like a few people that are somewhat familiar. So, we have one like this for our ghost installer is a good example where basically, we'll document this and say, hey, you're going to go into the marketplace, hit install, give it a subdomain, and then here's the basic setup instructions. And then from there, you've got these add-ons, which will do things like allow people to automatically update the application, set up in ghost case, set up SMTP or mail gun configuration for newsletters, and then the domain. I'm going to do something like this with Hedge Dock, but it'll probably just be domain configuration and updating. So, a one-click button to basically pull Docker containers, and a one-click button to map a different domain to the proxying setup. So, that is the end goal. We won't get all the way to that today, but I'm going to get to this manifest file, which is basically this thing is a file that we can use to tell Reclaim Cloud how to make new colors. So, I'm going here and give it some basic Hedge Dock, JPS, some basic values. We're just going to keep the defaults, most of the default information here. So, I'm going to give this a short name of, did I say manifold earlier? No, I was thinking of manifold because we did a folder installer too. Hedge Dock, short name, put it in the Hedge Dock folder, repo by default for now until I make a repository for this later. Cool. Actually, I need to make one now. I think about it. So, actually, I'll probably just make a repository on GitHub website really quick. Type o in the Hedge Dock. No problem. Cool. Every time I see the word pilot or co-pilot, I get jump scared. What do people want from me? Let me take down the banner. We don't need that anymore. Okay. You know what? I'm going to utilize this locally. It'll be easier. Oh, you're running this in a terminal? I'm actually just doing this really quickly in a in Visual Studio Code. But it's not particularly interesting because all I'm doing is copying and pasting the contents of files that we're already working with into there. This is kind of like a weird way to do this, to be perfectly honest. But in the interest of speed, I'm just going to do it this way. So, I'm going to copy my manifest file as I have it right now. I'm going to copy my... I'm going to copy my docker file here for NGINX. There's not much in here, other than it allows a little bit larger upload sizes. And we are going to copy my docker compose file into the repository. And finally, my ENV file. Again, if I was doing this off stream, and I had a little bit more time, I probably would have just started with it from there. And eventually, that is this way I'm doing it now. Okay. So, okay, cool. So, there's my basic repository. It's got the files that we've created so far in it. So, let me go back to my manifest file here. And yeah, we're just going to use the web editor because that's what I'm already sharing my screen. Yeah, it's visible. It works. It works. If it ain't broke. Yeah. Yeah. Okay. So, basically what this is going to do is it's going to, for now, simply copy down the Git repository. It's going to delete some of the stuff that makes it a Git repository. And it's going to sub in the correct domain and email from the person's reclaim account and their environment. It's going to set up some add-ons which should actually work out of the box, I think. Yeah. And let me just double check some things here. Yeah, we're going to see. We're going to see what happens here. So, what I'm going to do to test this, because this isn't live on Reclaim Cloud yet, I'm going to copy the contents of that file and we're going to go to import, paste it in here, and hit go. And before I do that, I'm going to look at the console in Reclaim Cloud. Yeah. So, this is essentially running the one-click installer without having a specific button to hit. Yeah. Although, I'm not sure why the console is not working. It's okay. I have another way I can get to this. So, yeah, there's not much here in terms of useful stuff, but that's fine right now. We'll hit install. And I can look at it actually from here too and see what it does, because it probably won't work perfectly our first time here. And we only have a minute left anyway. But I can see from here what it's doing in terms of, okay, it's giving it a domain. It's going to be creating an environment. It's creating a Docker engine node. But then when it gets to my actual installer part, I can look at the commands it's running and see where I went wrong, basically. It's always really cool just to see who. So, this is what I was looking for. Some of this here. So, post install actions. Yeah. Okay. Here's our errors. Creating network with a default driver. Calling with default driver. Cannot locate specified Docker file. So, it's tripping over a file it couldn't find. And I probably named it wrong or something like that. Enginex.daca file. We are here. Our bane. Yeah. So, what I'll do is immediately go and change that. This is what happens when you do it the way I did the shortcut way. What I will do is I'll need to just quickly rename that. I don't even know if I can rename files from the web interface here. Yeah. I'll just do it from my local copy here. But it's okay. We're not going to have time to run that again. But what I can do is just I renamed it here and I can run the last commands in the installer again to see if that worked. Because where it would have tripped up on that file name being wrong should be here on the Docker compose up, which is really the last command in the setup step. And we can do some checking on that. So, I go into my .env file. It correctly filled in my... Oh, this is the wrong environment. Here we go. If we go in my .env file, it should have correctly filled in the domain name and everything. Cool. So, what I need to go is just make sure that's renamed to Docker file and it is. And I can start things up. Sweet. And if this works, we are a lot of the way to a working installer. Awesome. I have a whole to-do list for stuff to do after this stream now. There's so much going on. Yeah. So, and I'll probably, again, we're basically out of time for us, but let me see if this is... Hey, yeah, that works. So, we have the basics. What I need to do next, basically next steps. And I'm saying this now because afterwards I'm going to watch this back and make some notes for myself. But what has to happen next is I need to go through configuration options. I'm going to set some... What I think will be good defaults for our customers, basically. Won't be dramatically different than Hedge Dock's own defaults. But I'm not 100% sure about... I probably will allow public registrations because that, I think, is going to be the easiest way for people to automatically make user accounts. But I think it may be one of those things where I may make a button that automatically turns off public registrations so that they can have that... Like at the point of install a toggle that says... No, as an add-on. So, that way you could quickly enable registrations and disable them. I think for an average user, that would be a really simple way to handle the fact that I want to be able to make an account and turn it on or off. I don't know. I'll have to think about that. Yeah, if it's an add-on, that'll end up in the same area as we showed the ghost installer. Yeah, and I pulled my thing off screen. But this should have... Oh, no, I didn't... Okay, because it technically failed, it didn't have... It didn't create the add-ons as it should, but those will have those... I closed it already. But yeah, as I showed with the ghost installer, the update button, the domain configuration button, those are sort of standard things that I reuse for a lot of these. Yeah, because you want to set a custom domain, maybe. Yeah, I may make one to turn public registrations on or off in Hedge Dock, just so that way people don't have to do it from the command line or whatever. We'll see. That's possible. But importantly, I need to do things like set a spot in the .env file for some of these common configuration options so people can get to them easy. And really importantly, right now we're using a completely insecure database password. So we will set a database password that's randomized in the installer. And that's one of those things that is pretty easy in the JPS Jelastic Packaging scripting. I don't know, whatever. The stuff that Reclaim Cloud uses for its installer, there's like a function that will just generate passwords for us. So I will put that in too, because right now I think the default database password is password. So don't want that. So those are the three things. And then we got to document it and then we can publish it. So this was good. This was a long way towards the installer. We got the bare minimum, basically what I would say running as a one click. And now we just need to add some of the security thing and some of those niceties. And we can do that. I'm not sure if we'll do that part on stream or not. But pretty soon we should have a working HedgeDoc installer available on Reclaim Cloud. So I really appreciate everyone bearing with me while I struggled through this for a little bit. And we had some really nice people in the chat that was cool. I'm going to go change my GitHub secret token and see you all another time. See ya. Oops, that's not my button.