diff --git a/README.md b/README.md index afb9b32..980c5db 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,8 @@ Repository for Laconic's website, hosted on internal infrastructure. -To update it; ensure you have access, ssh in, rebuild the docker image, and redeploy it using stack orchestrator. +To update it; ensure you have access to erasmus and follow the instructions for production, below. -## Access - -1) ensure you have a user on `abernathy` (ask Shane), -2) to your `~/.ssh/config` add - -``` -Host abernathy - Hostname abernathy.vdb.to - Port 12000 - User zach - -Host dugwaybeds.vdb.to - ProxyJump abernathy -``` - -then, - -``` -ssh user@dugwaybeds.vdb.to -``` - -Next, either deploy to staging or to production (see further below). ## Local development To build and serve this site on your local machine: @@ -57,20 +35,6 @@ Run the development server yarn dev ``` -## Staging - -To run a temporary staging deployment, - -- ensure none exists or remove it -- run `laconic-so --stack laconic-dot-com setup-repositories` -- navigate to `~/cerc/laconic.com` -- select the correct branch/commit -- https://laconic-staging.vdb.to points to port 3100 on the server, therefore: -- in the `package.json`, edit this field `"scripts":{ "dev": "next -p 3100",` -- run `export NEXT_PUBLIC_DATOCMS_BYPASS_TYPE="local_json"` -- use `tmux` then `yarn dev`; after a dozen or so seconds, the staging site should be live -- use `ctrl + b, d` to exit `tmux` and `tmux a` to re-enter it - ## Production Uses stack orchestrator. For example: @@ -78,23 +42,40 @@ Uses stack orchestrator. For example: ``` laconic-so --stack laconic-dot-com setup-repositories laconic-so --stack laconic-dot-com build-containers -laconic-so --stack laconic-dot-com deploy init --output laconic-website-spec.yml --map-ports-to-host localhost-same +laconic-so --stack laconic-dot-com deploy init --output laconic-website-spec.yml +``` + +Then, edit spec file: + +``` +stack: laconic-dot-com +deploy-to: k8s +kube-config: /home/.kube/config.yaml +image-registry: container-registry.apps.vaasl.io +network: + ports: + laconic-dot-com: + - '3000' + http-proxy: + - host-name: laconic.apps.vaasl.io + routes: + - path: '/' + proxy-to: laconic-dot-com:3000 +``` + +Create a deployment, push the image, and start the pod: + +``` laconic-so --stack laconic-dot-com deploy create --spec-file laconic-website-spec.yml --deployment-dir lx-website -# stop here; remove old deployment +laconic-so deployment --dir lx-website push-images laconic-so deployment --dir lx-website start ``` -For each user, future deployments can omit the `setup-repositories` command. Instead, you can `cd ~/cerc/laconic.com` and pull in the correct commit. - -To update the site, right now today, use the above 5 commands, stopping after the 4th to remove the current deployment. It looks like: +To deploy update, go to `/cerc/laconic.com`, pull the correct commit, then: ``` -docker ps +laconic-so --stack laconic-dot-com build-containers +laconic-so deployment --dir lx-website push-images +laconic-so deployment --dir lx-website stop +laconic-so deployment --dir lx-website start ``` -``` -068675f32292 cerc/laconic-dot-com:local "docker-entrypoint.s…" 7 weeks ago Up 5 weeks 127.0.0.1:3000->3000/tcp laconic-ac6c84bb25793c5f943a87eb10b4d918-laconic-dot-com-1 -``` - -To remove it, run `docker rm -f ` - -Then, run `laconic-so deployment --dir lx-website start` and https://laconic.com should be live with your changes. diff --git a/json/site_content/blogPost/jan2025-update.json b/json/site_content/blogPost/jan2025-update.json new file mode 100644 index 0000000..7d1319b --- /dev/null +++ b/json/site_content/blogPost/jan2025-update.json @@ -0,0 +1,382 @@ +{ + "data": { + "blogPost": { + "slug": "laconic-update", + "title": "Laconic Update: Product Evolution and Network Progress", + "date": "2025-01-27", + "category": [ + { + "id": "6311820", + "slug": "developers", + "title": "Developers" + } + ], + "author": { + "id": "63992470", + "name": "Zach Ramsay" + }, + "image": { + "url": "/images/site_content/blogPost/laconic-update.png" + }, + "content": { + "blocks": [ + { + "id": "63992474", + "title": "Laconic Update Image" + } + ], + "links": [], + "value": { + "schema": "dast", + "document": { + "type": "root", + "children": [ + { + "type": "heading", + "level": 2, + "children": [ + { + "type": "span", + "value": "Laconic Update" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "When I started working on Laconic two years ago, the main product was called Watchers, a highly performant indexing solution for Dapps, i.e., a blockchain data oracle. While we still have Watchers in production for customers, it was difficult to find product market fit. At that time, key features of the existing Laconic Network testnet were still in development. Today, we introduce a much needed product for the web3 community." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "A Product You Can Use Today" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "We're excited to announce that the " + }, + { + "url": "https://store.laconic.com", + "meta": [ + { + "id": "target", + "value": "_blank" + } + ], + "type": "link", + "children": [ + { + "type": "span", + "marks": [ + "underline" + ], + "value": "Laconic Store" + } + ] + }, + { + "type": "span", + "value": " and " + }, + { + "url": "https://deploy.laconic.com", + "meta": [ + { + "id": "target", + "value": "_blank" + } + ], + "type": "link", + "children": [ + { + "type": "span", + "marks": [ + "underline" + ], + "value": "Laconic Deployer" + } + ] + }, + { + "type": "span", + "value": " are now live and operational. These offer a decentralized alternative to traditional SaaS webapp hosting. Behind the scenes, Laconic Deployer uses the ongoing Laconic Network testnet and its qualified Service Providers." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "First Testnet Recap" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "Our first testnet ran for three weeks at the end of August 2024. LNT was allocated based on our published formula. Participants with the App Publisher role will be invited to complete KYC procedures prior to mainnet launch; Service Providers that participated in this testnet completed KYC." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Second Testnet Upgrade" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "We've transitioned to a second testnet featuring an auction service for webapp hosting. Special recognition goes to rxpwnz and BlackBlocks for their coordination to restart it following a network halt. It is on this testnet for which you'll receive tokens from the Laconic Store for use in the Laconic Deployer." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Building a Service Provider Network" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "The first testnet helped us identify qualified Service Providers capable of configuring and operating bare metal Kubernetes clusters using the Laconic tech stack. These providers have been invited to formalize their participation through KYC and SLA agreements, ensuring the Laconic Network can deliver reliable uptime of various infrastructure for any web3 project." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Laconic Registry" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "The Laconic Registry, supported by bonds and name auctions, enables Proof of Publication for arbitrary records. Registry records are used across multiple services and drive the Laconic Deployer infrastructure. Service Providers running Laconic software monitor the Laconic Registry for paid deployment requests. These requests automatically trigger the building, deploying, and hosting of webapp frontends in a repeatable, secure and decentralized manner." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Laconic Store and Deployer" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "The Laconic Store is a payment gated faucet for Laconic Network testnet tokens. These tokens can be used in the Laconic Deployer, held for future services, or used to request specific services from Service Providers, e.g., as a governance proposal. The Laconic Deployer is a convenience front end for Laconic developer tooling. This tooling offers the full set of features to facilitate projects' migration from centralized SaaS services. With five and growing active Service Providers - each in different countries - projects can select specific providers or create auctions for multiple deployments across winning providers." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Project Integration" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "We've demonstrated that our system works across multiple formats of web applications. Since the beginning of the first testnet, a variety of community members have published all manner of web apps: from DeFi frontends like Osmosis, Uniswap, and Namada, to games like Snake and Oregon Trail. Laconic Service Providers are qualified to run all types of web3 infrastructure such as RPCs, indexers, validators and everything in between." + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Roadmap to Mainnet" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "The following development tasks remain as we prepare for mainnet:" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "Bridge Implementation - Transfer Ethereum LNT (an ERC20) into the Laconic Network\nStack Deployer - Registry driven deployments beyond webapps\nWatcher Parties - Decentralized load balancing and DNS services\nLiquidity Pool - Protocol owned liquidity that receives tokens from projects that request service from the Laconic Network" + } + ] + }, + { + "type": "heading", + "level": 3, + "children": [ + { + "type": "span", + "value": "Looking Ahead" + } + ] + }, + { + "type": "paragraph", + "children": [ + { + "type": "span", + "value": "We're focused on driving usage of the Laconic Network testnet via the Laconic Deployer and related web3 infrastructure services. We invite projects that have a need for services to reach out on " + }, + { + "url": "https://discord.gg/V7wJgQcMez", + "meta": [ + { + "id": "target", + "value": "_blank" + } + ], + "type": "link", + "children": [ + { + "type": "span", + "marks": [ + "underline" + ], + "value": "Discord" + } + ] + }, + { + "type": "span", + "value": "." + } + ] + } + ] + } + }, + "featured": false, + "id": "63992475", + "_status": "published", + "_seoMetaTags": [ + { + "attributes": null, + "content": "Laconic Update: Product Evolution and Network Progress", + "tag": "title" + }, + { + "attributes": { + "property": "og:title", + "content": "Laconic Update: Product Evolution and Network Progress" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "name": "twitter:title", + "content": "Laconic Update: Product Evolution and Network Progress" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "property": "og:image", + "content": "/images/site_content/blogPost/laconic-update.png?auto=format&fit=max&w=1200" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "name": "twitter:image", + "content": "/images/site_content/blogPost/laconic-update.png?auto=format&fit=max&w=1200" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "property": "og:locale", + "content": "en" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "property": "og:type", + "content": "article" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "property": "article:modified_time", + "content": "2024-08-30T00:00:00Z" + }, + "content": null, + "tag": "meta" + }, + { + "attributes": { + "name": "twitter:card", + "content": "summary" + }, + "content": null, + "tag": "meta" + } + ] + } + } + } +} diff --git a/public/images/site_content/blogPost/laconic-update.png b/public/images/site_content/blogPost/laconic-update.png new file mode 100644 index 0000000..d0387e4 Binary files /dev/null and b/public/images/site_content/blogPost/laconic-update.png differ