blob: 4f3f5f96408df6eedad8c4d72580b9a738a77fb5 [file] [log] [blame]
<!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=en class=no-js><head><script>(function(){const t=localStorage.getItem("theme");t==="dark"?document.documentElement.classList.add("dark-mode"):t==="light"&&document.documentElement.classList.remove("dark-mode");const n=document.documentElement.classList.contains("dark-mode"),e=document.getElementById("theme-icon");e&&(e.classList&&e.classList.toggle("fa-sun",!n),e.classList&&e.classList.toggle("fa-moon",n))})()</script><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=canonical type=text/html href=/docs/installation/><link rel=alternate type=application/rss+xml href=/docs/installation/index.xml><meta name=robots content="noindex, nofollow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>Installation | Apache OpenServerless™</title>
<meta name=description content="How to and where install OpenServerless"><meta property="og:url" content="/docs/installation/"><meta property="og:site_name" content="Apache OpenServerless™"><meta property="og:title" content="Installation"><meta property="og:description" content="How to and where install OpenServerless"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta itemprop=name content="Installation"><meta itemprop=description content="How to and where install OpenServerless"><meta itemprop=dateModified content="2025-08-01T16:51:57+02:00"><meta itemprop=wordCount content="201"><meta name=twitter:card content="summary"><meta name=twitter:title content="Installation"><meta name=twitter:description content="How to and where install OpenServerless"><link rel=preload href=/scss/main.min.63d3665407fbf8c19373c7376d20ae27b458d1c085cc6645b75d65bbf044b537.css as=style><link href=/scss/main.min.63d3665407fbf8c19373c7376d20ae27b458d1c085cc6645b75d65bbf044b537.css rel=stylesheet integrity><script src=/js/jquery-3.7.1.min.js></script><script defer src=/js/lunr-2.3.9.min.js></script><link rel=stylesheet href=/css/prism.css></head><body class=td-section><header><nav class="td-navbar js-navbar-scroll" data-bs-theme=dark><div class="container-fluid flex-column flex-md-row"><a class=navbar-brand href=/><span class="navbar-brand__logo navbar-logo"><svg viewBox="0 0 1024 781"><g stroke-width="2" fill="none" stroke-linecap="butt"><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M438.8 120.98Q435.57 121.88 434.78 122.21 431.12 123.7 423.21 127.52"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M423.21 127.52C416.56 130.57 409.18 133.39 403.28 136.68Q394.42 141.62 387.66 147.15 379.83 153.54 367.83 164.27C360.8 170.55 354.15 177.8 347.45 184.72"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M347.45 184.72 342.5 189.88Q342.21 190.18 341.84 190.38 341.07 190.8 341.03 191.71 341.01 192.11 340.65 191.92 340.53 191.86 340.4 191.9 339.91 192.07 339.71 192.6 339.03 194.41 337.73 195.89 337.39 196.28 337.81 195.97 337.86 195.93 337.92 195.9 338.54 195.6 338.12 196.15 335.04 200.12 332.21 203.99 332.03 204.23 331.79 204.04L331.46 203.78Q331.41 203.74 331.44 203.69 332.29 202.33 333.12 201.24 333.2 201.13 333.11 201 333.07 200.95 333.03 201 332.05 202.53 330.7 203.79 330.54 203.94 330.75 203.87 330.79 203.85 330.84 203.87 331.05 203.97 331.06 204.2 331.13 205.63 329.99 206.5A1.85 1.78 81.9 00329.4 207.32Q329.06 208.29 328.39 209.14 328.09 209.52 327.61 209.58 325.89 209.82 326 211.78A1.3 1.27-28 01325.72 212.66Q324.07 214.8 323.12 217.7"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M323.12 217.7 318.02 228.46"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M318.02 228.46Q313.27 234.86 311.76 237.75 309.37 242.33 305.99 252.05 304.46 256.44 305.93 254.25"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M305.93 254.25Q305.62 255.63 304.89 256.82 304.77 257.01 304.97 257.12L305.2 257.24Q305.23 257.26 305.24 257.22 306.13 255.05 307.26 252.78 307.34 252.62 307.51 252.71L307.73 252.82Q307.75 252.84 307.74 252.86 306.25 255.22 305.41 257.9 304.19 261.82 302.64 265.97 302.35 266.75 301.89 267.38C300.98 268.59 301.07 270.27 300.39 271.68Q299.06 274.47 298.36 277.53 298.26 277.97 297.92 278.28 297.32 278.84 297.16 279.76 296.53 283.42 295.29 287.79C294.38 290.99 294.69 294.16 293.83 297.36 292.99 300.5 293.12 303.75 292.59 306.9Q290.82 317.42 290.83 332.15C290.83 348.21 291.88 362.54 296.59 377.96Q298.48 384.15 300.49 390.37 301.18 392.52 299.65 390.86 298.11 389.19 295.54 387.72 290.29 384.72 285.05 381.84"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M285.05 381.84Q283.43 380.56 281.9 380.1C279.89 379.5 278.26 378.64 276.39 378.23 274.28 377.77 271.98 376.83 270.21 376.37Q255.65 372.58 240.43 373.13"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M240.43 373.13Q233.74 372.8 227 373.57 218.25 374.57 209.52 375.73 205.54 376.26 202.03 377.1 198.41 377.96 194.65 378.96 194.3 379.05 194.13 379.39A.74.72-79.5 01193.55 379.8Q189.92 380.15 187.2 381.49 184.73 382.71 182.18 383.81 179.39 385.01 177.01 386.52q-10.2 6.5-21.71 15.23-11.53 8.75-19.24 19.06C135.77 421.2 135.78 421.58 135.55 421.95Q132.47 426.87 128.69 431.08 125.96 434.1 123.91 437.19 121.72 440.47 119.57 443.8 119.26 444.28 119.09 444.83 118.95 445.24 118.63 445.53 116.84 447.17 116 449.6A1.7 1.69 80.4 01115.47 450.35Q115.1 450.66 114.87 451.08 111.96 456.46 110.57 460.85 109.15 465.35 107.7 469.25 104.74 477.22 102.44 485.43 102.33 485.83 102.71 485.65 103.01 485.5 102.86 485.13 102.81 485.01 102.88 485.11 102.9 485.13 102.93 485.15 102.99 485.16 102.97 485.22 101.22 490.96 100.5 495.31 98.77 505.78 98.79 517.39 98.79 517.88 98.5 518.29 98.25 518.63 98.23 519.04 97.87 528.44 98.18 537.77"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M98.18 537.77Q98.75 547.92 100.1 554.97q3.73 19.49 13.1 38.62 15.56 31.76 43.03 52.74Q162.21 650.9 172.97 656.97 173.4 657.21 173.93 657.11 174.27 657.04 174.47 657.33 175.25 658.44 176.62 658.35 176.74 658.34 176.63 658.37 176.5 658.41 176.38 658.48 176.21 658.58 176.36 658.71 179.72 661.6 184.36 663.69 193.12 667.64 200.92 670.96 203.51 672.06 206.39 672.09C213.79 672.17 220.75 674.59 227.85 675.5Q241.51 677.25 258.42 677.27 335.37 677.38 410.89 677.26 415.61 677.25 421.31 677.06A.94.94.0 00422.22 676.12L422.48 603.46"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M422.48 603.46C422.72 519.97 422.5 436.49 422.59 353Q422.59 348.1 423.66 344.48C424.85 340.39 429.55 336.76 433.9 336.21Q436.66 335.85 439.49 335.86 494.27 335.98 572.06 335.69 584.93 335.64 589.91 334.78 597.94 333.4 606.26 330.74C615.95 327.65 626.03 324.05 635.5 320.14Q646.37 315.66 657.62 312.96 667.09 310.69 676.08 307.82 691.68 302.85 706.51 297.5 712.77 295.24 718.01 296.26"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M718.01 296.26Q725.51 299 729.94 305.03 734.73 311.55 735.73 318.39 736.01 320.31 736.08 332.62 736.25 364.24 736.19 397 736.19 399.08 736.23 400.97"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M736.23 400.97Q735.9 449.45 735.46 497.75 735.19 527.79 736.15 604.08"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M736.15 604.08 736.67 675.56A2.19 2.19.0 00738.87 677.73Q767.94 677.54 795.44 677.62 817.97 677.68 841.39 674.15 847.16 673.28 852.49 671.66C860.03 669.38 868.01 666.67 874.77 663.04 886.51 656.73 899.29 648.52 907.95 640.2Q915.92 632.55 923.63 625.37 929.31 620.09 933.33 613.73C935.19 610.8 937.51 608.42 939.12 605.35 940.33 603.02 941.92 600.89 943.21 598.54Q943.45 598.12 943.29 597.67L943.16 597.31A.83.81 57.5 01943.33 596.5Q944.29 595.46 944.39 593.99A1.71 1.69-26.2 01944.69 593.13Q945.61 591.77 945.97 590.12 946.3 588.59 946.91 587.17 949.11 582.1 951.27 576.84 951.72 575.76 951.83 574.56 951.94 573.38 952.44 572.26 953.13 570.7 953.66 569.03 955.4 563.55 956.49 558.44 958.79 547.6 959.78 535.62 961.35 516.61 958.61 497.75C957.77 492.01 956.07 486.17 954.92 480.43Q954.15 476.64 952.59 472.89 950.98 469.01 950.1 465.43 949.18 461.64 947.3 458.42C946.62 457.26 946.43 456.23 946.02 455.01Q945.59 453.76 944.8 452.54 943.11 449.92 941.65 447.11C941.28 446.4 941.38 445.57 941.14 445Q940.04 442.39 934.75 436.96"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M934.75 436.96c-13.04-17.58-27.99-33.32-46.72-44.66"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M888.03 392.3Q882.24 387.36 875.24 384.36 875.2 384.34 875.22 384.3L875.35 384.08Q875.43 383.93 875.59 384L877.96 385.14Q877.99 385.16 878 385.13L878.15 384.9Q878.28 384.7 878.05 384.62 872.13 382.5 867.06 380.02 863.08 378.07 858.83 376.66 854.27 375.14 850.01 374.21 849.95 374.2 849.93 374.26L849.87 374.51A.03.03.0 00849.9 374.55Q857.11 375.83 861.77 378.39 864.48 379.88 861.51 379.04 859.01 378.34 856.67 377.6 852.48 376.26 846.15 375.67 846.1 375.67 846.08 375.63 846.06 375.57 846.12 375.55 846.17 375.54 846.21 375.55 847.25 375.84 848.13 375.69 848.82 375.58 848.13 375.43 844.1 374.56 840.02 375.3"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M840.02 375.3C831.63 374.33 823.73 372.69 814.84 373.31 813.35 373.41 812.06 372.84 810.51 372.87Q803.01 373.01 796.27 374.55C793.63 375.15 790.95 375.45 788.28 375.61Q787.88 375.64 787.61 375.92 787.23 376.32 786.68 376.4 780.74 377.31 775.04 379.37 770.87 380.88 764.64 384.8 759.7 387.91 754.7 391.19"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M754.7 391.19Q756.26 383.46 757.81 375.98 759.76 366.58 760.51 360.7 763.46 337.48 761.63 314.17 760.99 306.01 758.91 294.37 757.01 283.7 754.89 272.75 752.59 260.84 747.54 249.46 745.67 245.25 743.7 240.2 741.38 234.25 736.66 226.75C735.76 225.32 735.24 223.86 734.21 222.51Q733.24 221.24 732.62 219.78C731.88 218.02 730.63 216.88 729.84 215.09 728.87 212.88 727.16 211.39 726.04 209.26Q724.69 206.7 722.92 204.55 721.11 202.35 719.49 200.03C716.95 196.39 714.67 192.59 711.27 189.61Q707.54 186.33 704.82 182.42C701.84 178.13 697.85 175.09 694.54 171.01 691.17 166.84 686.76 163.44 682.74 159.88 681.82 159.06 681.72 157.86 680.73 157.06Q677.63 154.54 674.69 152.45A.07.06-54.1 00674.6 152.47L674.46 152.68Q674.33 152.89 674.54 153.03 676.02 153.98 677.32 155.07 677.52 155.24 677.29 155.11C674.74 153.75 672.51 152.11 670.69 149.82Q669.3 148.07 667.31 146.74 660.44 142.14 653.7 138.48 648.98 135.92 644.35 132.84 639.79 129.81 632.39 126.59 617.15 119.97 605.94 116.26C604.1 115.65 602.23 115.81 600.47 115.15"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M600.47 115.15Q599.76 114.79 599.28 114.25"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M599.28 114.25Q596.64 112.8 593.69 111.95 583.64 109.04 573.39 106.9 563.66 104.88 556.72 105.12"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M556.72 105.12Q535.59 102.85 519.25 103.18 496.98 103.62 471.85 109.31C463.27 111.26 455.62 114.24 447.42 117.07Q446.79 117.29 446.29 117.73 445.73 118.22 445.1 118.66 444.28 119.23 443.25 119.55 441.01 120.23 438.8 120.98"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M556.72 105.12Q564.58 106.17 572.15 108.42C574.83 109.21 577.17 109.07 579.82 109.64Q580.27 109.74 580.44 110.18 580.67 110.82 581.38 110.86 584.36 111.04 587.12 112.11C589.32 112.96 591.64 112.98 593.93 113.32Q594.18 113.36 596.46 114.17 597.76 114.63 599.28 114.25"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M600.47 115.15Q594.24 113.95 588.04 112.66 587.87 112.62 587.83 112.79 587.79 112.96 587.95 113.01 608.88 119.22 628.21 129.72C633.49 132.58 638.52 136.35 642.99 140.24q14.51 12.64 31.59 30.96Q681.7 178.84 686.51 185.46 692.99 194.41 696.62 201.36q10.9 20.91 18.41 47.15Q719.1 262.72 719.73 277.51 719.97 283.23 720.2 288.75 720.33 291.8 718.01 296.26"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M422.48 603.46 422.19 604.18Q421.98 604.7 421.43 604.61 416.66 603.86 412.59 603.87 348.88 604.09 284.71 603.84 267.13 603.77 251.02 602.46q-26.06-2.13-48.84-16.86C192.75 579.51 184.08 570.63 176.23 562.27 168.02 553.53 162.76 544.13 157.62 533.43Q155.23 528.46 153.32 520.84 150.92 511.24 149.17 502.91 148.38 499.18 148.32 495.49 148.17 486.3 148.6 475.52 148.73 472.34 149.5 469.45C150.03 467.49 149.69 465.7 150.07 463.83Q151.96 454.51 155.02 444.09 155.48 442.53 153.86 442.72 152.56 442.88 151.06 444.55 146.57 449.55 141.46 455.04 139.5 457.14 138.35 459.6C134.82 467.17 129.7 474.41 125.5 481.29Q121.17 488.38 116.92 498.43q-5.45 12.9-6.99 23.22C108.92 528.49 108.26 535.39 107.3 542.31Q107.23 542.83 106.78 543.08C101.52 546 99.61 542.27 98.18 537.77"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M240.43 373.13Q248.72 374.13 256.93 375.23C258.7 375.47 260.5 375.38 262.22 375.92Q264.38 376.6 266.46 376.63 268.9 376.67 270.74 377.14 278.05 378.99 285.05 381.84"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M305.93 254.25l12.09-25.79"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M323.12 217.7 323.73 217.65Q324.29 217.6 324.32 217.04 324.34 216.71 324.56 216.47 325.2 215.76 324.74 216.59 324.56 216.9 324.39 217.19 324.34 217.28 324.42 217.33 324.53 217.4 324.61 217.5 324.73 217.67 324.8 217.48L327.22 210.74Q327.33 210.44 327.62 210.57L327.88 210.69Q327.9 210.7 327.87 210.75L326.51 213.47Q326.35 213.8 326.68 213.96L326.95 214.1A.12.12.0 00327.11 214.04Q328.64 210.79 330.13 208.73 334.34 202.94 338.25 196.98C340.99 192.8 344.46 188.91 347.45 184.72"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M423.21 127.52l11.43-4.11Q434.84 123.34 434.69 123.5 434.59 123.61 434.43 123.71 433.68 124.17 434.55 124.09 434.86 124.06 435.14 123.85 436.98 122.44 438.8 120.98"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M754.7 391.19Q747.41 397.76 741.58 399.89 740.39 400.32 736.23 400.97"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M840.02 375.3Q848.37 376.89 856.74 378.43 858.39 378.73 859.67 379.4 861.35 380.28 862.67 380.11 863.04 380.06 862.71 380.22 862.58 380.28 862.61 380.45A.15.15.0 00862.73 380.57Q866.19 381.33 869.24 383.34 871.62 384.91 874.77 386.12 881.6 388.74 888.03 392.3"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M934.75 436.96Q933.36 439.7 931.62 440.82 930.42 441.59 929.18 440.89C920.72 436.1 912.25 432.32 903.95 427.51Q895.85 422.81 887.81 419.18A.49.49.0 00887.11 419.62Q887.09 420.94 887.79 422.07C891.49 428.02 895.07 433.53 898.27 440Q900.43 444.36 901.68 448 905.05 457.86 905.65 470.46 906.19 481.77 906.47 492.77 906.79 505.08 902.92 519.5C901.13 526.18 898.98 532.57 895.88 538.78Q889.94 550.64 883.64 559.19 875.85 569.75 866.31 577.47 846.68 593.35 821.44 600.21C811.7 602.85 801.87 603.19 791.75 603.52Q762.45 604.46 736.15 604.08"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M572.05 680.95Q573.46 683.34 577.75 683.35 578.25 683.35 578.66 683.64 580.2 684.7 582 685.13 584.37 685.69 585.95 686.1 588.82 686.85 591.3 687.21C595.8 687.86 600.29 689.82 604.84 691.11Q618.05 694.87 630.86 698.4 635.66 699.73 651.25 702.9 652.68 703.19 654.31 703.37 655.83 703.54 657.52 704.26 660.29 705.43 664.46 705.55"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M664.46 705.55 700.51 716.23A.45.45.0 00701.07 715.67Q700.51 713.85 700.53 711.75 701.4 620.4 700.42 518.5 700.28 504.3 700.93 458.5 701.46 420.35 700.4 335.5 700.38 334.25 700.52 333.01A.89.88 85.1 00699.4 332.06Q679.62 337.71 665.91 342.7 641.72 351.5 619.65 358.49 592.44 367.1 572.6 374.15A1.9 1.89-9.9 00571.34 375.93Q571.18 513.33 571.39 654.5 571.41 667.76 572.05 680.95"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M664.46 705.55Q662.11 704.49 659.7 703.75 657.6 703.1 655.67 702.18 653.66 701.22 651.42 700.83C647.87 700.21 644.58 699.9 641.14 698.5Q637.25 696.91 633.31 695.66 624.29 692.77 614.98 690.12 607.98 688.12 599.95 686.55 588.3 684.27 584.74 683.66 576.99 682.31 572.05 680.95"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M506.73 508.96Q507.23 508.97 507.24 509.47L507.61 567.73A1.71 1.71.0 00509.29 569.43L512.14 569.48Q513.67 569.51 513.68 567.99L514.06 509.31A.65.65.0 01514.72 508.66Q524.38 508.75 533.37 508.51 534.45 508.49 535.45 508.14 536.77 507.68 535.94 506.56 525.56 492.62 516.03 477.72 513.11 473.15 510.64 468.22A.71.71.0 00509.34 468.32Q508.89 469.68 508.14 470.81 499.59 483.62 490.59 498.33C488.69 501.42 486.13 503.98 484.7 507.4A.85.84-75.5 00485.38 508.57C492.34 509.35 499.77 508.84 506.73 508.96"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M323.4069 219.9496A.86.45 98.9 00323.9846 219.1696.86.45 98.9 00323.6731 218.2504.86.45 98.9 00323.0954 219.0304.86.45 98.9 00323.4069 219.9496"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M562.87 105.64Q563.01 105.79 563.21 105.74 563.58 105.65 563.24 105.48 563.06 105.39 562.89 105.5A.09.09.0 00562.87 105.64"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M679.22 372.53C679.23 371.09 679.54 369.88 679.85 368.51A.54.54.0 00679.29 367.85Q677.1 368.03 675.2 368.64 662.08 372.86 652.04 375.23 641.91 377.62 633.09 380.61 616.35 386.29 597.27 393.54C595.19 394.33 594.11 394.37 594.1 396.75Q593.82 453.73 594.23 510.63A.53.53.0 00594.87 511.14C612.16 507.54 629.52 503.71 647.2 500.59Q662.96 497.81 678.69 494.94 679.2 494.85 679.2 494.33 679.02 429.9 679.22 372.53"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M679.1894 535.7817a14.73 13.11 84.9 0011.7487-15.8371 14.73 13.11 84.9 00-14.3675-13.5063 14.73 13.11 84.9 00-11.7487 15.8371 14.73 13.11 84.9 0014.3675 13.5063"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M653.47 677.48C653.58 677.65 653.78 677.81 653.97 677.85Q666.29 680.76 678.03 684.83A.8.79-79.7 00679.09 684.09C679.65 637.75 679.02 593.21 679.12 547.6Q679.12 546.36 677.91 546.11 673.94 545.3 670.08 544.24C662.1 542.05 657.76 536.87 655.27 529.33A.58.57 76.9 00654.64 528.93Q625.29 532.84 594.78 537.76A.97.97.0 00593.96 538.72L594.14 660.05A1.82 1.81-79.8 00595.31 661.75Q600.8 663.83 606.74 665.66 624.02 670.98 642.31 674.66 645.11 675.22 647.69 676.02 650.42 676.85 653.38 677.42 653.44 677.43 653.47 677.48"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M663.15 390.16A.99.99.0 00661.85 389.22l-51.99 17.14A.99.99.0 00609.19 407.31L609.77 491.24A.99.99.0 00610.99 492.19L662.55 480A.99.99.0 00663.31 479.04L663.15 390.16"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M610.01 645.38C610.01 646.98 610.77 648.42 612.26 649.06 620.63 652.63 629.2 654.01 637.6 656.47Q649.19 659.86 661.88 663.03 663.27 663.38 663.33 661.95 663.43 659.77 663.43 657.69 663.36 600.71 663.09 550.52A1.49 1.48 1.9 00661.71 549.05Q658.24 548.79 654.88 548.95 640.98 549.6 624.11 551.2 617.1 551.87 609.98 552.02A.46.45-1.3 00609.53 552.48Q609.94 600.04 610.01 645.38"/></g><path fill="#276089" d="M255.43 337.58A1.16 1.15-8 00256.16 336.62Q256.94 329.44 256.97 321.89 257.01 312.67 258.49 300.83 260.97 280.96 264.63 264.23 267.08 253.08 270.94 243.18C272.28 239.75 274.57 236.93 276.22 233.52 282.54 220.44 289.18 206.77 297.09 195.08c14.64-21.65 32.53-44.29 51-59.85Q358.75 126.26 377.98 112.74 386.74 106.58 396.21 101.52q32.66-17.44 64.71-24.98C478.3 72.45 497.66 69.39 516.24 68.95Q539.13 68.4 559.76 70.68 603.35 75.49 639 92.39c15.7 7.44 31.16 15.56 45.33 25.63C708.06 134.9 728.25 153.79 745.77 178.17q28.53 39.69 41.12 83.29C789.89 271.86 792.34 283.71 793.66 294.66Q796.2 315.76 797.41 337.48A1.29 1.29.0 00798.69 338.7Q815.49 338.72 831.21 339.39C868.91 341 905.17 359.29 933.64 383.01 939.46 387.86 944.72 394.3 949.76 400.34 970.1 424.7 985.53 454.74 991.58 486.07Q997.12 514.79 994.49 540.6 989.42 590.5 960.66 630.97 946.97 650.24 931.32 664.82 918.69 676.6 899.38 686.96 880.83 696.92 863.47 701.77 836.07 709.42 806.25 710.24 774.38 711.1 736.61 711.19A1.97 1.96 7.1 00734.72 712.66C734.18 714.76 733.61 717.01 733.65 719.2 733.84 728.71 732.87 743.34 721.34 746.39Q718.5 747.14 716.12 748.82 715.67 749.14 715.13 749.15 713.55 749.18 711.03 748.73C690.73 745.11 671.12 739.21 651.67 733.55 640.94 730.43 629.8 726.69 618.56 723.66Q594.7 717.23 575.34 712.41 569.8 711.03 554.9 710.73C535.85 710.34 517.09 709.97 498.26 710.05Q426.4 710.36 354.01 711.11C327.54 711.39 300.74 711.31 273.96 711.36Q244.61 711.41 219.84 708.3 208.25 706.84 188 700.75 172.03 695.95 155.79 686.75 144.05 680.09 137 674.83c-19.35-14.45-34.77-33.51-48.28-53.75C85.29 615.94 82.26 610.27 79.9 604.58 72.57 586.93 66.35 568.74 63.94 550.49 62.68 540.98 61.35 531.56 61.65 521.49q1.04-35.65 13.88-70.2Q79.3 441.12 83.46 433.44q17.03-31.42 43.33-53.64c21.23-17.94 45.35-29.63 72.03-36.95C216.78 337.93 234.03 338.04 253.26 337.98Q254.42 337.98 255.43 337.58zM438.8 120.98Q435.57 121.88 434.78 122.21 431.12 123.7 423.21 127.52C416.56 130.57 409.18 133.39 403.28 136.68Q394.42 141.62 387.66 147.15 379.83 153.54 367.83 164.27C360.8 170.55 354.15 177.8 347.45 184.72L342.5 189.88Q342.21 190.18 341.84 190.38 341.07 190.8 341.03 191.71 341.01 192.11 340.65 191.92 340.53 191.86 340.4 191.9 339.91 192.07 339.71 192.6 339.03 194.41 337.73 195.89 337.39 196.28 337.81 195.97 337.86 195.93 337.92 195.9 338.54 195.6 338.12 196.15 335.04 200.12 332.21 203.99 332.03 204.23 331.79 204.04L331.46 203.78Q331.41 203.74 331.44 203.69 332.29 202.33 333.12 201.24 333.2 201.13 333.11 201 333.07 200.95 333.03 201 332.05 202.53 330.7 203.79 330.54 203.94 330.75 203.87 330.79 203.85 330.84 203.87 331.05 203.97 331.06 204.2 331.13 205.63 329.99 206.5A1.85 1.78 81.9 00329.4 207.32Q329.06 208.29 328.39 209.14 328.09 209.52 327.61 209.58 325.89 209.82 326 211.78A1.3 1.27-28 01325.72 212.66Q324.07 214.8 323.12 217.7L318.02 228.46Q313.27 234.86 311.76 237.75 309.37 242.33 305.99 252.05 304.46 256.44 305.93 254.25 305.62 255.63 304.89 256.82 304.77 257.01 304.97 257.12L305.2 257.24Q305.23 257.26 305.24 257.22 306.13 255.05 307.26 252.78 307.34 252.62 307.51 252.71L307.73 252.82Q307.75 252.84 307.74 252.86 306.25 255.22 305.41 257.9 304.19 261.82 302.64 265.97 302.35 266.75 301.89 267.38C300.98 268.59 301.07 270.27 300.39 271.68Q299.06 274.47 298.36 277.53 298.26 277.97 297.92 278.28 297.32 278.84 297.16 279.76 296.53 283.42 295.29 287.79C294.38 290.99 294.69 294.16 293.83 297.36 292.99 300.5 293.12 303.75 292.59 306.9Q290.82 317.42 290.83 332.15C290.83 348.21 291.88 362.54 296.59 377.96Q298.48 384.15 300.49 390.37 301.18 392.52 299.65 390.86 298.11 389.19 295.54 387.72 290.29 384.72 285.05 381.84 283.43 380.56 281.9 380.1C279.89 379.5 278.26 378.64 276.39 378.23 274.28 377.77 271.98 376.83 270.21 376.37Q255.65 372.58 240.43 373.13 233.74 372.8 227 373.57 218.25 374.57 209.52 375.73 205.54 376.26 202.03 377.1 198.41 377.96 194.65 378.96 194.3 379.05 194.13 379.39A.74.72-79.5 01193.55 379.8Q189.92 380.15 187.2 381.49 184.73 382.71 182.18 383.81 179.39 385.01 177.01 386.52q-10.2 6.5-21.71 15.23-11.53 8.75-19.24 19.06C135.77 421.2 135.78 421.58 135.55 421.95Q132.47 426.87 128.69 431.08 125.96 434.1 123.91 437.19 121.72 440.47 119.57 443.8 119.26 444.28 119.09 444.83 118.95 445.24 118.63 445.53 116.84 447.17 116 449.6A1.7 1.69 80.4 01115.47 450.35Q115.1 450.66 114.87 451.08 111.96 456.46 110.57 460.85 109.15 465.35 107.7 469.25 104.74 477.22 102.44 485.43 102.33 485.83 102.71 485.65 103.01 485.5 102.86 485.13 102.81 485.01 102.88 485.11 102.9 485.13 102.93 485.15 102.99 485.16 102.97 485.22 101.22 490.96 100.5 495.31 98.77 505.78 98.79 517.39 98.79 517.88 98.5 518.29 98.25 518.63 98.23 519.04 97.87 528.44 98.18 537.77 98.75 547.92 100.1 554.97q3.73 19.49 13.1 38.62 15.56 31.76 43.03 52.74Q162.21 650.9 172.97 656.97 173.4 657.21 173.93 657.11 174.27 657.04 174.47 657.33 175.25 658.44 176.62 658.35 176.74 658.34 176.63 658.37 176.5 658.41 176.38 658.48 176.21 658.58 176.36 658.71 179.72 661.6 184.36 663.69 193.12 667.64 200.92 670.96 203.51 672.06 206.39 672.09C213.79 672.17 220.75 674.59 227.85 675.5Q241.51 677.25 258.42 677.27 335.37 677.38 410.89 677.26 415.61 677.25 421.31 677.06A.94.94.0 00422.22 676.12L422.48 603.46C422.72 519.97 422.5 436.49 422.59 353Q422.59 348.1 423.66 344.48C424.85 340.39 429.55 336.76 433.9 336.21Q436.66 335.85 439.49 335.86 494.27 335.98 572.06 335.69 584.93 335.64 589.91 334.78 597.94 333.4 606.26 330.74C615.95 327.65 626.03 324.05 635.5 320.14Q646.37 315.66 657.62 312.96 667.09 310.69 676.08 307.82 691.68 302.85 706.51 297.5 712.77 295.24 718.01 296.26 725.51 299 729.94 305.03 734.73 311.55 735.73 318.39 736.01 320.31 736.08 332.62 736.25 364.24 736.19 397 736.19 399.08 736.23 400.97 735.9 449.45 735.46 497.75 735.19 527.79 736.15 604.08L736.67 675.56A2.19 2.19.0 00738.87 677.73Q767.94 677.54 795.44 677.62 817.97 677.68 841.39 674.15 847.16 673.28 852.49 671.66C860.03 669.38 868.01 666.67 874.77 663.04 886.51 656.73 899.29 648.52 907.95 640.2Q915.92 632.55 923.63 625.37 929.31 620.09 933.33 613.73C935.19 610.8 937.51 608.42 939.12 605.35 940.33 603.02 941.92 600.89 943.21 598.54Q943.45 598.12 943.29 597.67L943.16 597.31A.83.81 57.5 01943.33 596.5Q944.29 595.46 944.39 593.99A1.71 1.69-26.2 01944.69 593.13Q945.61 591.77 945.97 590.12 946.3 588.59 946.91 587.17 949.11 582.1 951.27 576.84 951.72 575.76 951.83 574.56 951.94 573.38 952.44 572.26 953.13 570.7 953.66 569.03 955.4 563.55 956.49 558.44 958.79 547.6 959.78 535.62 961.35 516.61 958.61 497.75C957.77 492.01 956.07 486.17 954.92 480.43Q954.15 476.64 952.59 472.89 950.98 469.01 950.1 465.43 949.18 461.64 947.3 458.42C946.62 457.26 946.43 456.23 946.02 455.01Q945.59 453.76 944.8 452.54 943.11 449.92 941.65 447.11C941.28 446.4 941.38 445.57 941.14 445Q940.04 442.39 934.75 436.96c-13.04-17.58-27.99-33.32-46.72-44.66Q882.24 387.36 875.24 384.36 875.2 384.34 875.22 384.3L875.35 384.08Q875.43 383.93 875.59 384L877.96 385.14Q877.99 385.16 878 385.13L878.15 384.9Q878.28 384.7 878.05 384.62 872.13 382.5 867.06 380.02 863.08 378.07 858.83 376.66 854.27 375.14 850.01 374.21 849.95 374.2 849.93 374.26L849.87 374.51A.03.03.0 00849.9 374.55Q857.11 375.83 861.77 378.39 864.48 379.88 861.51 379.04 859.01 378.34 856.67 377.6 852.48 376.26 846.15 375.67 846.1 375.67 846.08 375.63 846.06 375.57 846.12 375.55 846.17 375.54 846.21 375.55 847.25 375.84 848.13 375.69 848.82 375.58 848.13 375.43 844.1 374.56 840.02 375.3C831.63 374.33 823.73 372.69 814.84 373.31 813.35 373.41 812.06 372.84 810.51 372.87Q803.01 373.01 796.27 374.55C793.63 375.15 790.95 375.45 788.28 375.61Q787.88 375.64 787.61 375.92 787.23 376.32 786.68 376.4 780.74 377.31 775.04 379.37 770.87 380.88 764.64 384.8 759.7 387.91 754.7 391.19 756.26 383.46 757.81 375.98 759.76 366.58 760.51 360.7 763.46 337.48 761.63 314.17 760.99 306.01 758.91 294.37 757.01 283.7 754.89 272.75 752.59 260.84 747.54 249.46 745.67 245.25 743.7 240.2 741.38 234.25 736.66 226.75C735.76 225.32 735.24 223.86 734.21 222.51Q733.24 221.24 732.62 219.78C731.88 218.02 730.63 216.88 729.84 215.09 728.87 212.88 727.16 211.39 726.04 209.26Q724.69 206.7 722.92 204.55 721.11 202.35 719.49 200.03C716.95 196.39 714.67 192.59 711.27 189.61Q707.54 186.33 704.82 182.42C701.84 178.13 697.85 175.09 694.54 171.01 691.17 166.84 686.76 163.44 682.74 159.88 681.82 159.06 681.72 157.86 680.73 157.06Q677.63 154.54 674.69 152.45A.07.06-54.1 00674.6 152.47L674.46 152.68Q674.33 152.89 674.54 153.03 676.02 153.98 677.32 155.07 677.52 155.24 677.29 155.11C674.74 153.75 672.51 152.11 670.69 149.82Q669.3 148.07 667.31 146.74 660.44 142.14 653.7 138.48 648.98 135.92 644.35 132.84 639.79 129.81 632.39 126.59 617.15 119.97 605.94 116.26C604.1 115.65 602.23 115.81 600.47 115.15Q599.76 114.79 599.28 114.25 596.64 112.8 593.69 111.95 583.64 109.04 573.39 106.9 563.66 104.88 556.72 105.12 535.59 102.85 519.25 103.18 496.98 103.62 471.85 109.31C463.27 111.26 455.62 114.24 447.42 117.07Q446.79 117.29 446.29 117.73 445.73 118.22 445.1 118.66 444.28 119.23 443.25 119.55 441.01 120.23 438.8 120.98zM572.05 680.95Q573.46 683.34 577.75 683.35 578.25 683.35 578.66 683.64 580.2 684.7 582 685.13 584.37 685.69 585.95 686.1 588.82 686.85 591.3 687.21C595.8 687.86 600.29 689.82 604.84 691.11Q618.05 694.87 630.86 698.4 635.66 699.73 651.25 702.9 652.68 703.19 654.31 703.37 655.83 703.54 657.52 704.26 660.29 705.43 664.46 705.55L700.51 716.23A.45.45.0 00701.07 715.67Q700.51 713.85 700.53 711.75 701.4 620.4 700.42 518.5 700.28 504.3 700.93 458.5 701.46 420.35 700.4 335.5 700.38 334.25 700.52 333.01A.89.88 85.1 00699.4 332.06Q679.62 337.71 665.91 342.7 641.72 351.5 619.65 358.49 592.44 367.1 572.6 374.15A1.9 1.89-9.9 00571.34 375.93Q571.18 513.33 571.39 654.5 571.41 667.76 572.05 680.95zM506.73 508.96Q507.23 508.97 507.24 509.47L507.61 567.73A1.71 1.71.0 00509.29 569.43L512.14 569.48Q513.67 569.51 513.68 567.99L514.06 509.31A.65.65.0 01514.72 508.66Q524.38 508.75 533.37 508.51 534.45 508.49 535.45 508.14 536.77 507.68 535.94 506.56 525.56 492.62 516.03 477.72 513.11 473.15 510.64 468.22A.71.71.0 00509.34 468.32Q508.89 469.68 508.14 470.81 499.59 483.62 490.59 498.33C488.69 501.42 486.13 503.98 484.7 507.4A.85.84-75.5 00485.38 508.57C492.34 509.35 499.77 508.84 506.73 508.96z"/><path fill="#fff" d="M556.72 105.12Q564.58 106.17 572.15 108.42C574.83 109.21 577.17 109.07 579.82 109.64Q580.27 109.74 580.44 110.18 580.67 110.82 581.38 110.86 584.36 111.04 587.12 112.11C589.32 112.96 591.64 112.98 593.93 113.32Q594.18 113.36 596.46 114.17 597.76 114.63 599.28 114.25 599.76 114.79 600.47 115.15 594.24 113.95 588.04 112.66 587.87 112.62 587.83 112.79 587.79 112.96 587.95 113.01 608.88 119.22 628.21 129.72C633.49 132.58 638.52 136.35 642.99 140.24q14.51 12.64 31.59 30.96Q681.7 178.84 686.51 185.46 692.99 194.41 696.62 201.36q10.9 20.91 18.41 47.15Q719.1 262.72 719.73 277.51 719.97 283.23 720.2 288.75 720.33 291.8 718.01 296.26 712.77 295.24 706.51 297.5 691.68 302.85 676.08 307.82 667.09 310.69 657.62 312.96 646.37 315.66 635.5 320.14C626.03 324.05 615.95 327.65 606.26 330.74Q597.94 333.4 589.91 334.78 584.93 335.64 572.06 335.69 494.27 335.98 439.49 335.86 436.66 335.85 433.9 336.21C429.55 336.76 424.85 340.39 423.66 344.48Q422.59 348.1 422.59 353C422.5 436.49 422.72 519.97 422.48 603.46L422.19 604.18Q421.98 604.7 421.43 604.61 416.66 603.86 412.59 603.87 348.88 604.09 284.71 603.84 267.13 603.77 251.02 602.46q-26.06-2.13-48.84-16.86C192.75 579.51 184.08 570.63 176.23 562.27 168.02 553.53 162.76 544.13 157.62 533.43Q155.23 528.46 153.32 520.84 150.92 511.24 149.17 502.91 148.38 499.18 148.32 495.49 148.17 486.3 148.6 475.52 148.73 472.34 149.5 469.45C150.03 467.49 149.69 465.7 150.07 463.83Q151.96 454.51 155.02 444.09 155.48 442.53 153.86 442.72 152.56 442.88 151.06 444.55 146.57 449.55 141.46 455.04 139.5 457.14 138.35 459.6C134.82 467.17 129.7 474.41 125.5 481.29Q121.17 488.38 116.92 498.43q-5.45 12.9-6.99 23.22C108.92 528.49 108.26 535.39 107.3 542.31Q107.23 542.83 106.78 543.08C101.52 546 99.61 542.27 98.18 537.77Q97.87 528.44 98.23 519.04 98.25 518.63 98.5 518.29 98.79 517.88 98.79 517.39 98.77 505.78 100.5 495.31 101.22 490.96 102.97 485.22 102.99 485.16 102.93 485.15 102.9 485.13 102.88 485.11 102.81 485.01 102.86 485.13 103.01 485.5 102.71 485.65 102.33 485.83 102.44 485.43 104.74 477.22 107.7 469.25 109.15 465.35 110.57 460.85 111.96 456.46 114.87 451.08 115.1 450.66 115.47 450.35A1.7 1.69 80.4 00116 449.6Q116.84 447.17 118.63 445.53 118.95 445.24 119.09 444.83 119.26 444.28 119.57 443.8 121.72 440.47 123.91 437.19 125.96 434.1 128.69 431.08 132.47 426.87 135.55 421.95C135.78 421.58 135.77 421.2 136.06 420.81Q143.77 410.5 155.3 401.75 166.81 393.02 177.01 386.52 179.39 385.01 182.18 383.81 184.73 382.71 187.2 381.49 189.92 380.15 193.55 379.8A.74.72-79.5 00194.13 379.39Q194.3 379.05 194.65 378.96 198.41 377.96 202.03 377.1 205.54 376.26 209.52 375.73 218.25 374.57 227 373.57 233.74 372.8 240.43 373.13 248.72 374.13 256.93 375.23C258.7 375.47 260.5 375.38 262.22 375.92Q264.38 376.6 266.46 376.63 268.9 376.67 270.74 377.14 278.05 378.99 285.05 381.84 290.29 384.72 295.54 387.72 298.11 389.19 299.65 390.86 301.18 392.52 300.49 390.37 298.48 384.15 296.59 377.96C291.88 362.54 290.83 348.21 290.83 332.15Q290.82 317.42 292.59 306.9C293.12 303.75 292.99 300.5 293.83 297.36 294.69 294.16 294.38 290.99 295.29 287.79Q296.53 283.42 297.16 279.76 297.32 278.84 297.92 278.28 298.26 277.97 298.36 277.53 299.06 274.47 300.39 271.68C301.07 270.27 300.98 268.59 301.89 267.38Q302.35 266.75 302.64 265.97 304.19 261.82 305.41 257.9 306.25 255.22 307.74 252.86 307.75 252.84 307.73 252.82L307.51 252.71Q307.34 252.62 307.26 252.78 306.13 255.05 305.24 257.22 305.23 257.26 305.2 257.24L304.97 257.12Q304.77 257.01 304.89 256.82 305.62 255.63 305.93 254.25l12.09-25.79L323.12 217.7 323.73 217.65Q324.29 217.6 324.32 217.04 324.34 216.71 324.56 216.47 325.2 215.76 324.74 216.59 324.56 216.9 324.39 217.19 324.34 217.28 324.42 217.33 324.53 217.4 324.61 217.5 324.73 217.67 324.8 217.48L327.22 210.74Q327.33 210.44 327.62 210.57L327.88 210.69Q327.9 210.7 327.87 210.75L326.51 213.47Q326.35 213.8 326.68 213.96L326.95 214.1A.12.12.0 00327.11 214.04Q328.64 210.79 330.13 208.73 334.34 202.94 338.25 196.98C340.99 192.8 344.46 188.91 347.45 184.72 354.15 177.8 360.8 170.55 367.83 164.27q12-10.73 19.83-17.12Q394.42 141.62 403.28 136.68C409.18 133.39 416.56 130.57 423.21 127.52l11.43-4.11Q434.84 123.34 434.69 123.5 434.59 123.61 434.43 123.71 433.68 124.17 434.55 124.09 434.86 124.06 435.14 123.85 436.98 122.44 438.8 120.98 441.01 120.23 443.25 119.55 444.28 119.23 445.1 118.66 445.73 118.22 446.29 117.73 446.79 117.29 447.42 117.07C455.62 114.24 463.27 111.26 471.85 109.31q25.13-5.69 47.4-6.13Q535.59 102.85 556.72 105.12zM323.4069 219.9496A.86.45 98.9 00323.9846 219.1696.86.45 98.9 00323.6731 218.2504.86.45 98.9 00323.0954 219.0304.86.45 98.9 00323.4069 219.9496z"/><path fill="#c4e6ff" d="M599.28 114.25Q597.76 114.63 596.46 114.17 594.18 113.36 593.93 113.32C591.64 112.98 589.32 112.96 587.12 112.11Q584.36 111.04 581.38 110.86 580.67 110.82 580.44 110.18 580.27 109.74 579.82 109.64C577.17 109.07 574.83 109.21 572.15 108.42Q564.58 106.17 556.72 105.12 563.66 104.88 573.39 106.9 583.64 109.04 593.69 111.95 596.64 112.8 599.28 114.25zm-36.41-8.61Q563.01 105.79 563.21 105.74 563.58 105.65 563.24 105.48 563.06 105.39 562.89 105.5A.09.09.0 00562.87 105.64z"/><path fill="#276089" d="M562.87 105.64A.09.09.0 01562.89 105.5Q563.06 105.39 563.24 105.48 563.58 105.65 563.21 105.74 563.01 105.79 562.87 105.64z"/><path fill="#c4e6ff" d="M600.47 115.15C602.23 115.81 604.1 115.65 605.94 116.26Q617.15 119.97 632.39 126.59 639.79 129.81 644.35 132.84 648.98 135.92 653.7 138.48 660.44 142.14 667.31 146.74 669.3 148.07 670.69 149.82C672.51 152.11 674.74 153.75 677.29 155.11Q677.52 155.24 677.32 155.07 676.02 153.98 674.54 153.03 674.33 152.89 674.46 152.68L674.6 152.47A.07.06-54.1 01674.69 152.45Q677.63 154.54 680.73 157.06C681.72 157.86 681.82 159.06 682.74 159.88 686.76 163.44 691.17 166.84 694.54 171.01 697.85 175.09 701.84 178.13 704.82 182.42Q707.54 186.33 711.27 189.61C714.67 192.59 716.95 196.39 719.49 200.03Q721.11 202.35 722.92 204.55 724.69 206.7 726.04 209.26C727.16 211.39 728.87 212.88 729.84 215.09 730.63 216.88 731.88 218.02 732.62 219.78Q733.24 221.24 734.21 222.51C735.24 223.86 735.76 225.32 736.66 226.75Q741.38 234.25 743.7 240.2 745.67 245.25 747.54 249.46 752.59 260.84 754.89 272.75 757.01 283.7 758.91 294.37 760.99 306.01 761.63 314.17 763.46 337.48 760.51 360.7 759.76 366.58 757.81 375.98 756.26 383.46 754.7 391.19 747.41 397.76 741.58 399.89 740.39 400.32 736.23 400.97 736.19 399.08 736.19 397 736.25 364.24 736.08 332.62 736.01 320.31 735.73 318.39 734.73 311.55 729.94 305.03 725.51 299 718.01 296.26 720.33 291.8 720.2 288.75 719.97 283.23 719.73 277.51 719.1 262.72 715.03 248.51 707.52 222.27 696.62 201.36 692.99 194.41 686.51 185.46 681.7 178.84 674.58 171.2q-17.08-18.32-31.59-30.96C638.52 136.35 633.49 132.58 628.21 129.72q-19.33-10.5-40.26-16.71Q587.79 112.96 587.83 112.79 587.87 112.62 588.04 112.66 594.24 113.95 600.47 115.15z"/><path fill="#c4e6ff" d="M438.8 120.98Q436.98 122.44 435.14 123.85 434.86 124.06 434.55 124.09 433.68 124.17 434.43 123.71 434.59 123.61 434.69 123.5 434.84 123.34 434.64 123.41l-11.43 4.11Q431.12 123.7 434.78 122.21 435.57 121.88 438.8 120.98z"/><path fill="#c4e6ff" d="M347.45 184.72C344.46 188.91 340.99 192.8 338.25 196.98Q334.34 202.94 330.13 208.73 328.64 210.79 327.11 214.04A.12.12.0 01326.95 214.1L326.68 213.96Q326.35 213.8 326.51 213.47L327.87 210.75Q327.9 210.7 327.88 210.69L327.62 210.57Q327.33 210.44 327.22 210.74L324.8 217.48Q324.73 217.67 324.61 217.5 324.53 217.4 324.42 217.33 324.34 217.28 324.39 217.19 324.56 216.9 324.74 216.59 325.2 215.76 324.56 216.47 324.34 216.71 324.32 217.04 324.29 217.6 323.73 217.65L323.12 217.7Q324.07 214.8 325.72 212.66A1.3 1.27-28 00326 211.78Q325.89 209.82 327.61 209.58 328.09 209.52 328.39 209.14 329.06 208.29 329.4 207.32A1.85 1.78 81.9 01329.99 206.5Q331.13 205.63 331.06 204.2 331.05 203.97 330.84 203.87 330.79 203.85 330.75 203.87 330.54 203.94 330.7 203.79 332.05 202.53 333.03 201 333.07 200.95 333.11 201 333.2 201.13 333.12 201.24 332.29 202.33 331.44 203.69 331.41 203.74 331.46 203.78L331.79 204.04Q332.03 204.23 332.21 203.99 335.04 200.12 338.12 196.15 338.54 195.6 337.92 195.9 337.86 195.93 337.81 195.97 337.39 196.28 337.73 195.89 339.03 194.41 339.71 192.6 339.91 192.07 340.4 191.9 340.53 191.86 340.65 191.92 341.01 192.11 341.03 191.71 341.07 190.8 341.84 190.38 342.21 190.18 342.5 189.88L347.45 184.72z"/><ellipse fill="#c4e6ff" cx="0" cy="0" transform="translate(323.54,219.10) rotate(98.9)" rx=".86" ry=".45"/><path fill="#c4e6ff" d="M305.93 254.25Q304.46 256.44 305.99 252.05 309.37 242.33 311.76 237.75 313.27 234.86 318.02 228.46l-12.09 25.79z"/><path fill="#fff" d="M664.46 705.55Q662.11 704.49 659.7 703.75 657.6 703.1 655.67 702.18 653.66 701.22 651.42 700.83C647.87 700.21 644.58 699.9 641.14 698.5Q637.25 696.91 633.31 695.66 624.29 692.77 614.98 690.12 607.98 688.12 599.95 686.55 588.3 684.27 584.74 683.66 576.99 682.31 572.05 680.95 571.41 667.76 571.39 654.5 571.18 513.33 571.34 375.93A1.9 1.89-9.9 01572.6 374.15Q592.44 367.1 619.65 358.49 641.72 351.5 665.91 342.7 679.62 337.71 699.4 332.06A.89.88 85.1 01700.52 333.01Q700.38 334.25 700.4 335.5 701.46 420.35 700.93 458.5 700.28 504.3 700.42 518.5 701.4 620.4 700.53 711.75 700.51 713.85 701.07 715.67A.45.45.0 01700.51 716.23L664.46 705.55zm14.76-333.02C679.23 371.09 679.54 369.88 679.85 368.51A.54.54.0 00679.29 367.85Q677.1 368.03 675.2 368.64 662.08 372.86 652.04 375.23 641.91 377.62 633.09 380.61 616.35 386.29 597.27 393.54C595.19 394.33 594.11 394.37 594.1 396.75Q593.82 453.73 594.23 510.63A.53.53.0 00594.87 511.14C612.16 507.54 629.52 503.71 647.2 500.59Q662.96 497.81 678.69 494.94 679.2 494.85 679.2 494.33 679.02 429.9 679.22 372.53zM679.1894 535.7817a14.73 13.11 84.9 0011.7487-15.8371 14.73 13.11 84.9 00-14.3675-13.5063 14.73 13.11 84.9 00-11.7487 15.8371 14.73 13.11 84.9 0014.3675 13.5063zM653.47 677.48C653.58 677.65 653.78 677.81 653.97 677.85Q666.29 680.76 678.03 684.83A.8.79-79.7 00679.09 684.09C679.65 637.75 679.02 593.21 679.12 547.6Q679.12 546.36 677.91 546.11 673.94 545.3 670.08 544.24C662.1 542.05 657.76 536.87 655.27 529.33A.58.57 76.9 00654.64 528.93Q625.29 532.84 594.78 537.76A.97.97.0 00593.96 538.72L594.14 660.05A1.82 1.81-79.8 00595.31 661.75Q600.8 663.83 606.74 665.66 624.02 670.98 642.31 674.66 645.11 675.22 647.69 676.02 650.42 676.85 653.38 677.42 653.44 677.43 653.47 677.48z"/><path fill="#276089" d="M679.22 372.53Q679.02 429.9 679.2 494.33 679.2 494.85 678.69 494.94 662.96 497.81 647.2 500.59C629.52 503.71 612.16 507.54 594.87 511.14A.53.53.0 01594.23 510.63Q593.82 453.73 594.1 396.75C594.11 394.37 595.19 394.33 597.27 393.54Q616.35 386.29 633.09 380.61 641.91 377.62 652.04 375.23 662.08 372.86 675.2 368.64 677.1 368.03 679.29 367.85A.54.54.0 01679.85 368.51C679.54 369.88 679.23 371.09 679.22 372.53zM663.15 390.16A.99.99.0 00661.85 389.22l-51.99 17.14A.99.99.0 00609.19 407.31L609.77 491.24A.99.99.0 00610.99 492.19L662.55 480A.99.99.0 00663.31 479.04L663.15 390.16z"/><path fill="#fff" d="M840.02 375.3Q848.37 376.89 856.74 378.43 858.39 378.73 859.67 379.4 861.35 380.28 862.67 380.11 863.04 380.06 862.71 380.22 862.58 380.28 862.61 380.45A.15.15.0 00862.73 380.57Q866.19 381.33 869.24 383.34 871.62 384.91 874.77 386.12 881.6 388.74 888.03 392.3C906.76 403.64 921.71 419.38 934.75 436.96Q933.36 439.7 931.62 440.82 930.42 441.59 929.18 440.89C920.72 436.1 912.25 432.32 903.95 427.51Q895.85 422.81 887.81 419.18A.49.49.0 00887.11 419.62Q887.09 420.94 887.79 422.07C891.49 428.02 895.07 433.53 898.27 440Q900.43 444.36 901.68 448 905.05 457.86 905.65 470.46 906.19 481.77 906.47 492.77 906.79 505.08 902.92 519.5C901.13 526.18 898.98 532.57 895.88 538.78Q889.94 550.64 883.64 559.19 875.85 569.75 866.31 577.47 846.68 593.35 821.44 600.21C811.7 602.85 801.87 603.19 791.75 603.52Q762.45 604.46 736.15 604.08 735.19 527.79 735.46 497.75 735.9 449.45 736.23 400.97 740.39 400.32 741.58 399.89 747.41 397.76 754.7 391.19 759.7 387.91 764.64 384.8 770.87 380.88 775.04 379.37 780.74 377.31 786.68 376.4 787.23 376.32 787.61 375.92 787.88 375.64 788.28 375.61C790.95 375.45 793.63 375.15 796.27 374.55Q803.01 373.01 810.51 372.87C812.06 372.84 813.35 373.41 814.84 373.31 823.73 372.69 831.63 374.33 840.02 375.3z"/><path fill="#c4e6ff" d="M285.05 381.84Q278.05 378.99 270.74 377.14 268.9 376.67 266.46 376.63 264.38 376.6 262.22 375.92C260.5 375.38 258.7 375.47 256.93 375.23Q248.72 374.13 240.43 373.13 255.65 372.58 270.21 376.37C271.98 376.83 274.28 377.77 276.39 378.23 278.26 378.64 279.89 379.5 281.9 380.1Q283.43 380.56 285.05 381.84z"/><path fill="#c4e6ff" d="M888.03 392.3Q881.6 388.74 874.77 386.12 871.62 384.91 869.24 383.34 866.19 381.33 862.73 380.57A.15.15.0 01862.61 380.45Q862.58 380.28 862.71 380.22 863.04 380.06 862.67 380.11 861.35 380.28 859.67 379.4 858.39 378.73 856.74 378.43 848.37 376.89 840.02 375.3 844.1 374.56 848.13 375.43 848.82 375.58 848.13 375.69 847.25 375.84 846.21 375.55 846.17 375.54 846.12 375.55 846.06 375.57 846.08 375.63 846.1 375.67 846.15 375.67 852.48 376.26 856.67 377.6 859.01 378.34 861.51 379.04 864.48 379.88 861.77 378.39 857.11 375.83 849.9 374.55A.03.03.0 01849.87 374.51L849.93 374.26Q849.95 374.2 850.01 374.21 854.27 375.14 858.83 376.66 863.08 378.07 867.06 380.02 872.13 382.5 878.05 384.62 878.28 384.7 878.15 384.9L878 385.13Q877.99 385.16 877.96 385.14L875.59 384Q875.43 383.93 875.35 384.08L875.22 384.3Q875.2 384.34 875.24 384.36q7 3 12.79 7.94z"/><path fill="#fff" d="M663.15 390.16 663.31 479.04A.99.99.0 01662.55 480L610.99 492.19A.99.99.0 01609.77 491.24L609.19 407.31A.99.99.0 01609.86 406.36l51.99-17.14A.99.99.0 01663.15 390.16z"/><path fill="#c4e6ff" d="M934.75 436.96Q940.04 442.39 941.14 445C941.38 445.57 941.28 446.4 941.65 447.11Q943.11 449.92 944.8 452.54 945.59 453.76 946.02 455.01C946.43 456.23 946.62 457.26 947.3 458.42Q949.18 461.64 950.1 465.43 950.98 469.01 952.59 472.89 954.15 476.64 954.92 480.43C956.07 486.17 957.77 492.01 958.61 497.75Q961.35 516.61 959.78 535.62 958.79 547.6 956.49 558.44 955.4 563.55 953.66 569.03 953.13 570.7 952.44 572.26 951.94 573.38 951.83 574.56 951.72 575.76 951.27 576.84 949.11 582.1 946.91 587.17 946.3 588.59 945.97 590.12 945.61 591.77 944.69 593.13A1.71 1.69-26.2 00944.39 593.99Q944.29 595.46 943.33 596.5A.83.81 57.5 00943.16 597.31L943.29 597.67Q943.45 598.12 943.21 598.54C941.92 600.89 940.33 603.02 939.12 605.35 937.51 608.42 935.19 610.8 933.33 613.73Q929.31 620.09 923.63 625.37 915.92 632.55 907.95 640.2C899.29 648.52 886.51 656.73 874.77 663.04 868.01 666.67 860.03 669.38 852.49 671.66Q847.16 673.28 841.39 674.15 817.97 677.68 795.44 677.62 767.94 677.54 738.87 677.73A2.19 2.19.0 01736.67 675.56L736.15 604.08Q762.45 604.46 791.75 603.52C801.87 603.19 811.7 602.85 821.44 600.21Q846.68 593.35 866.31 577.47 875.85 569.75 883.64 559.19 889.94 550.64 895.88 538.78C898.98 532.57 901.13 526.18 902.92 519.5Q906.79 505.08 906.47 492.77 906.19 481.77 905.65 470.46 905.05 457.86 901.68 448 900.43 444.36 898.27 440C895.07 433.53 891.49 428.02 887.79 422.07Q887.09 420.94 887.11 419.62A.49.49.0 01887.81 419.18Q895.85 422.81 903.95 427.51C912.25 432.32 920.72 436.1 929.18 440.89Q930.42 441.59 931.62 440.82 933.36 439.7 934.75 436.96z"/><path fill="#c4e6ff" d="M422.48 603.46 422.22 676.12A.94.94.0 01421.31 677.06Q415.61 677.25 410.89 677.26 335.37 677.38 258.42 677.27 241.51 677.25 227.85 675.5C220.75 674.59 213.79 672.17 206.39 672.09Q203.51 672.06 200.92 670.96 193.12 667.64 184.36 663.69 179.72 661.6 176.36 658.71 176.21 658.58 176.38 658.48 176.5 658.41 176.63 658.37 176.74 658.34 176.62 658.35 175.25 658.44 174.47 657.33 174.27 657.04 173.93 657.11 173.4 657.21 172.97 656.97 162.21 650.9 156.23 646.33q-27.47-20.98-43.03-52.74Q103.83 574.46 100.1 554.97 98.75 547.92 98.18 537.77C99.61 542.27 101.52 546 106.78 543.08Q107.23 542.83 107.3 542.31C108.26 535.39 108.92 528.49 109.93 521.65Q111.47 511.33 116.92 498.43q4.25-10.05 8.58-17.14C129.7 474.41 134.82 467.17 138.35 459.6Q139.5 457.14 141.46 455.04 146.57 449.55 151.06 444.55 152.56 442.88 153.86 442.72 155.48 442.53 155.02 444.09 151.96 454.51 150.07 463.83C149.69 465.7 150.03 467.49 149.5 469.45Q148.73 472.34 148.6 475.52 148.17 486.3 148.32 495.49 148.38 499.18 149.17 502.91 150.92 511.24 153.32 520.84 155.23 528.46 157.62 533.43C162.76 544.13 168.02 553.53 176.23 562.27 184.08 570.63 192.75 579.51 202.18 585.6q22.78 14.73 48.84 16.86Q267.13 603.77 284.71 603.84 348.88 604.09 412.59 603.87 416.66 603.86 421.43 604.61 421.98 604.7 422.19 604.18L422.48 603.46z"/><path fill="#fff" d="M506.73 508.96C499.77 508.84 492.34 509.35 485.38 508.57A.85.84-75.5 01484.7 507.4C486.13 503.98 488.69 501.42 490.59 498.33q9-14.71 17.55-27.52Q508.89 469.68 509.34 468.32A.71.71.0 01510.64 468.22Q513.11 473.15 516.03 477.72 525.56 492.62 535.94 506.56 536.77 507.68 535.45 508.14 534.45 508.49 533.37 508.51 524.38 508.75 514.72 508.66A.65.65.0 00514.06 509.31L513.68 567.99Q513.67 569.51 512.14 569.48L509.29 569.43A1.71 1.71.0 01507.61 567.73L507.24 509.47Q507.23 508.97 506.73 508.96z"/><ellipse fill="#276089" cx="0" cy="0" transform="translate(677.88,521.11) rotate(84.9)" rx="14.73" ry="13.11"/><path fill="#276089" d="M653.38 677.42Q650.42 676.85 647.69 676.02 645.11 675.22 642.31 674.66 624.02 670.98 606.74 665.66 600.8 663.83 595.31 661.75A1.82 1.81-79.8 01594.14 660.05L593.96 538.72A.97.97.0 01594.78 537.76Q625.29 532.84 654.64 528.93A.58.57 76.9 01655.27 529.33C657.76 536.87 662.1 542.05 670.08 544.24Q673.94 545.3 677.91 546.11 679.12 546.36 679.12 547.6C679.02 593.21 679.65 637.75 679.09 684.09A.8.79-79.7 01678.03 684.83Q666.29 680.76 653.97 677.85C653.78 677.81 653.58 677.65 653.47 677.48Q653.44 677.43 653.38 677.42zm-43.37-32.04C610.01 646.98 610.77 648.42 612.26 649.06 620.63 652.63 629.2 654.01 637.6 656.47Q649.19 659.86 661.88 663.03 663.27 663.38 663.33 661.95 663.43 659.77 663.43 657.69 663.36 600.71 663.09 550.52A1.49 1.48 1.9 00661.71 549.05Q658.24 548.79 654.88 548.95 640.98 549.6 624.11 551.2 617.1 551.87 609.98 552.02A.46.45-1.3 00609.53 552.48Q609.94 600.04 610.01 645.38z"/><path fill="#fff" d="M612.26 649.06C610.77 648.42 610.01 646.98 610.01 645.38Q609.94 600.04 609.53 552.48A.46.45-1.3 01609.98 552.02Q617.1 551.87 624.11 551.2 640.98 549.6 654.88 548.95 658.24 548.79 661.71 549.05A1.49 1.48 1.9 01663.09 550.52Q663.36 600.71 663.43 657.69 663.43 659.77 663.33 661.95 663.27 663.38 661.88 663.03 649.19 659.86 637.6 656.47C629.2 654.01 620.63 652.63 612.26 649.06z"/><path fill="#c4e6ff" d="M664.46 705.55Q660.29 705.43 657.52 704.26 655.83 703.54 654.31 703.37 652.68 703.19 651.25 702.9 635.66 699.73 630.86 698.4 618.05 694.87 604.84 691.11C600.29 689.82 595.8 687.86 591.3 687.21Q588.82 686.85 585.95 686.1 584.37 685.69 582 685.13 580.2 684.7 578.66 683.64 578.25 683.35 577.75 683.35 573.46 683.34 572.05 680.95 576.99 682.31 584.74 683.66 588.3 684.27 599.95 686.55 607.98 688.12 614.98 690.12 624.29 692.77 633.31 695.66 637.25 696.91 641.14 698.5C644.58 699.9 647.87 700.21 651.42 700.83Q653.66 701.22 655.67 702.18 657.6 703.1 659.7 703.75 662.11 704.49 664.46 705.55z"/></svg></span><span class=navbar-brand__name>Apache OpenServerless™</span></a><div class="td-navbar-nav-scroll ms-md-auto" id=main_navbar><ul class=navbar-nav><li class=nav-item><a class=nav-link href=/about/><span>About</span></a></li><li class=nav-item><a class=nav-link href=/blog/><span>Blog</span></a></li><li class=nav-item><a class="nav-link active" href=/docs/><span>Docs</span></a></li><li class=nav-item><a class=nav-link href=/community/><span>Community</span></a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" role=button data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false href><span>Apache Software Foundation</span></a><ul class=dropdown-menu><li><a class=dropdown-item href=https://www.apache.org/>Apache Homepage</a></li><li><a class=dropdown-item href=https://www.apache.org/licenses/>License</a></li><li><a class=dropdown-item href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a class=dropdown-item href=https://www.apache.org/foundation/thanks.html>Thanks</a></li><li><a class=dropdown-item href=https://www.apache.org/security/>Security</a></li><li><a class=dropdown-item href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a class=dropdown-item href=https://www.apache.org/events/current-event>Events</a></li></ul></li></ul></div></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><div class=td-content><div class="pageinfo pageinfo-primary d-print-none"><p>This is the multi-page printable view of this section.
<a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/docs/installation/>Return to the regular view of this page</a>.</p></div><h1 class=title>Installation</h1><div class=lead>How to and where install OpenServerless</div><ul><li>1: <a href=#pg-8c3f05165c53384fa59c1453a0fb9b64>Quick Start</a></li><ul></ul><li>2: <a href=#pg-1642ee41003decf99634e3d9c714851c>Download</a></li><ul></ul><li>3: <a href=#pg-d88677d4167778f5d3ca8a81629227c5>Prerequisites</a></li><ul><li>3.1: <a href=#pg-0224021be1c39f3dd5683066e33d007c>Local Docker</a></li><ul></ul><li>3.2: <a href=#pg-b0ef4b2e79b17c0bf42df9cbc4da7029>Linux Server</a></li><ul><li>3.2.1: <a href=#pg-c8f8a7091cc35f968fc5e121e51c459b>SSH and Sudo</a></li><ul></ul><li>3.2.2: <a href=#pg-7de93c022dce0399d0fb529ba96bc7e6>Server on AWS</a></li><ul></ul><li>3.2.3: <a href=#pg-3a59e283e51e41b6d5b36b0ca31c690c>Server on Azure</a></li><ul></ul><li>3.2.4: <a href=#pg-8e157365d16cb8fe54ef2c7d50505022>Install K3S</a></li><ul></ul><li>3.2.5: <a href=#pg-b4e9b33b69177f5f056217b0d67c2031>Install MicroK8S</a></li><ul></ul></ul><li>3.3: <a href=#pg-f32ce604d7868701850b6029ab564835>Kubernetes Cluster</a></li><ul><li>3.3.1: <a href=#pg-1fd119711d8fba54dc56350b34daad88>Amazon EKS</a></li><ul></ul><li>3.3.2: <a href=#pg-c5304e0f61e6fb87af4b9940c2922fec>Azure AKS</a></li><ul></ul><li>3.3.3: <a href=#pg-e0ed70c138e5d50c8207cdcc1a07f4e0>Generic Kubernetes</a></li><ul></ul></ul></ul><li>4: <a href=#pg-f6b9a66f9506e4a7437691a389daca4f>Configure OpenServerless</a></li><ul><li>4.1: <a href=#pg-be207599c3aa71cb110feb062b890918>DNS and SSL</a></li><ul></ul><li>4.2: <a href=#pg-29e1dfdb1ff6aee88ce1de74e2c1f27d>Services</a></li><ul></ul></ul><li>5: <a href=#pg-234d738d46569ad9a8a7ae7fed565a21>Install OpenServerless</a></li><ul><li>5.1: <a href=#pg-468eb1c803501e0c8fee24ddc1d4914c>Docker</a></li><ul></ul><li>5.2: <a href=#pg-2a348e473e676744aeb27b6b290fa85c>Linux Server</a></li><ul></ul><li>5.3: <a href=#pg-e2ad6ea02f40220590e02be2e3387f01>Kubernetes cluster</a></li><ul></ul></ul><li>6: <a href=#pg-c7d6e75a293d35b4ca7156b87967599c>Troubleshooting</a></li><ul></ul></ul><div class=content><h2 id=installation>Installation</h2><h3 id=overview>Overview</h3><p>If you are in hurry and you think this guide is TL;DR (too long, don’t
read), please read at least our <a href=/docs/installation/quickstart/>Quick Start</a>
single page installation guide.</p><p>It gives you an overview of the installation process, omitting some more
advanced details. It can be enough to get you started and install
OpenServerless.</p><p>Once you want to know more, you can come back.</p><p>If you instead want the read the full documentation first, please read
on.</p><h3 id=steps-to-follow>Steps to follow</h3><p>OpenServerless can be installed in many environments, using our powerful
command line interface <code>ops</code>.</p><p>So you should start downloading the CLI <a href=/docs/installation/download/>from this
page</a>.</p><p>Once you installed <code>ops</code>, before installing you need to <a href=/docs/installation/prereq/>check the
prerequisites</a> for the installation, and satisfy
them</p><p>If the the prerequisites are OK, you can make your choices of what you
want to <a href=/docs/installation/configure/>Configure</a> your OpenServerless
installation.</p><p>Finally, once you have:</p><ol><li><p>downloaded <code>ops</code></p></li><li><p>satisfied the prerequisites</p></li><li><p>configured your installation</p></li></ol><p>you can choose where to install, either:</p><ul><li><p>in your <a href=/docs/installation/install/docker/>Local machine</a></p></li><li><p>in a <a href=/docs/installation/install/server/>Linux server</a></p></li><li><p>in a <a href=/docs/installation/install/cluster/>Kubernetes cluster</a></p></li></ul><h3 id=post-installation>Post Installation</h3><p>After the installation, you can change later the configuration and
update the system.</p><h3 id=support>Support</h3><p>If you have issues, please check:</p><ul><li><p>the <a href=/docs/installation/debug/>Troubleshooting</a> page</p></li><li><p>our <a href=http://nuvolaris.discourse.group>Discussion forum</a></p></li></ul></div></div><div class=td-content style=page-break-before:always><h1 id=pg-8c3f05165c53384fa59c1453a0fb9b64>1 - Quick Start</h1><div class=lead>Fast path to install a self-hosted OpenServerless</div><h2 id=quick-start>Quick Start</h2><p>This is a quick start guide to the installation process, targeting
experienced users in a hurry.</p><p>It provides a high-level overview of the installation process, omitting
advanced of details. The missing pieces are covered in the rest of the
documentation.</p><p>Of course, if this guide is not enough and things fail, you can always
apply the rule: &ldquo;if everything fails, read the manual&rdquo;.</p><h2 id=prerequisites>Prerequisites</h2><p>Start ensuring the prerequsites are satisfied:</p><ul><li><p><a href=/docs/installation/download/>Download and install</a> <code>ops</code>, the
OpenServerless CLI, picking version suitable for your environment.
We support 64-bit versions of recent Windows, MacOS and major Linux
distributions.</p></li><li><p>Check that ops is correctly installed: open the terminal and write:</p><p>ops -info</p></li><li><p>Configure the services you want to enable. By default,
OpenServerless will install only the serverless engine, accessible
in http with no services enabled.</p></li></ul><p>If you want to enable all the services, use:</p><pre><code>ops config enable --all
</code></pre><p>otherwise pick the services you want, among <code>--redis</code>, <code>--mongodb</code>,
<code>--minio</code>, <code>--cron</code>, <code>--postgres</code>. Note that <code>--mongodb</code> is actually
<a href=https://www.ferretdb.com/>FerretDB</a> and requires Postgres which is
implicitly also enabled. More details <a href=/docs/installation/configure/>here</a>.</p><p>Now, choose where to install OpenServerless.</p><p>Your options are:</p><ul><li><p><a href=/docs/installation/quickstart/#locally>locally</a> in your workstation;</p></li><li><p>in a Linux <a href=/docs/installation/quickstart/#server>server</a> in your intranet</p></li><li><p>in a Linux <a href=/docs/installation/quickstart/#internet-server>server</a> available on Internet</p></li><li><p>in a Kubernetes <a href=/docs/installation/quickstart/#cluster>cluster</a> in your intranet</p></li><li><p>in <a href=/docs/installation/quickstart/#cloud-cluster>cloud</a>, where you can provision a Kubernetes
cluster</p></li></ul><h2 id=local-installation>Local Installation</h2><p>If you have a <strong>decent</strong> workstation (with at least 16GB of memory)
running a <strong>recent</strong> <strong>64-bit</strong> operating system, you can install
<a href=https://www.docker.com/products/docker-desktop/>Docker Desktop</a> and
then install OpenServerless in it. Once you have:</p><ol><li><p>installed the CLI</p></li><li><p>configured the services</p></li><li><p>installed Docker Desktop</p></li></ol><p>Make sure Docker Desktop its running before the next operation. Install OpenServerless and its services in Docker with just this
command:</p><pre><code>ops setup devcluster
</code></pre><p>Once it is installed, you can proceed to read the
<a href=/docs/installation/quickstart/#../../tutorial/index.adoc>tutorial</a> to learn how to code with it.</p><p>NOTE: At least 16GB of memory is ideal, but if you know what you’re
doing and can tolerate inefficiency, you can install with less using:</p><pre><code>export PREFL_NO_MEM_CHECK=1
export PLEFL_NO_CPU_CHECK=1
</code></pre><h2 id=internet-server-configuration>Internet Server Configuration</h2><p>If you have access to a server on the Internet, you will know its <strong>IP
address</strong>.</p><p>Many cloud providers also give you a DNS name usually derived by the IP
and very hard to remember such as
<code>ec2-12-34-56-78.us-west-2.compute.amazonaws.com</code>.</p><p>Once you got the IP address and the DNS name, you can give to your
server a bettername <a href=https://en.wikipedia.org/wiki/List_of_managed_DNS_providers>using a domain name
provider</a>.
We cannot give here precise instructions as there are many DNS providers
and each has different rules to do the setup. Check with your chosen
domain name provider.</p><p>If you have this name, configure it and enable DNS with:</p><pre><code>ops config apihost &lt;dns-name&gt; --tls=&lt;email-address&gt;
</code></pre><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title><strong>IMPORTANT</strong></p><p>Replace the <code>&lt;dns-name></code> with the actual DNS name, without using prefixes like <code>http://</code> or suffixes like <code>:443</code>. Also,
replace <email-address>` with your actual email address.</p></blockquote><p>then proceed with the server installation.</p><h2 id=server-installation>Server Installation</h2><p>Once you got access to a Linux server with:</p><ol><li><p>An IP address or DNS name, referred to as <code>&lt;server></code></p></li><li><p>Passwordless access with <code>ssh</code> to a Linux user <code>&lt;user></code></p></li><li><p>At least 8GB of memory and 50GB of disk space available</p></li><li><p>The user <code>&lt;user></code> has passwordless <code>sudo</code> rights</p></li><li><p>The firewall that allows traffic to ports 80, 443 and 6443</p></li><li><p><strong>Without</strong> any Docker or Kubernetes installed</p></li><li><p><strong>Without</strong> any Web server or Web application installed</p></li></ol><p>then you can install OpenServerless in it.</p><p>The server can be physical or virtual. We need Kubernetes in it but the
installer takes care of installing also a flavor of Kubernetes,
<a href=https://k3s.io>K3S</a>, courtesy of
<a href=https://github.com/alexellis/k3sup>K3Sup</a>.</p><p>To install OpenServerless, first check you have access to the server
with:</p><pre><code>ssh &lt;user&gt;@&lt;server&gt; sudo hostname
</code></pre><p>You should see no errors and read the internal hostname of your server.</p><p>If you do not receive errors, you can proceed to install OpenServerless
with this command:</p><pre><code>ops setup server &lt;server&gt; &lt;user&gt;
</code></pre><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title><strong>IMPORTANT</strong></p><p>Replace in the commands <code>&lt;server></code> with the address of your server, and
<code>&lt;user></code> with the actual user to use in your server. The <code>&lt;server></code> can
be the same as <code>&lt;dns-name></code> you have configured in the previous
paragraph, if you did so, or simply the IP address of a server on your
intranet.</p></blockquote><p>Now wait until the installation completes. Once it is installed, you can
proceed to read the <a href=/docs/installation/quickstart/#tutorial:index.adoc>tutorial</a> to learn how to
code with it.</p><h2 id=cloud-cluster-provisioning>Cloud Cluster Provisioning</h2><p>If you have access to a cloud provider, you can set up a Kubernetes
cluster in it. The Kubernetes cluster needs to satisfy certain
<a href=/docs/installation/quickstart/#../prereq/kubernetes/cluster/index.adoc>prerequisites</a> to be able to
install OpenServerless with no issues.</p><p>We provide the support to easily configure and install a compliant
Kubernetes cluster for the following clouds:</p><ul><li><p><a href=/docs/installation/quickstart/#aws>Amazon AWS</a></p></li><li><p><a href=/docs/installation/quickstart/#azure>Microsoft Azure</a></p></li><li><p><a href=/docs/installation/quickstart/#gcloud>Google Cloud</a></p></li></ul><p>At the end of the installation you will have available and accessible a
Kubernetes Cluster able to install OpenServerless, so proceed with a
<a href=/docs/installation/quickstart/#cluster>cluster installation</a>.</p><h3 id=amazon-aws>Amazon AWS</h3><p>Configure and install an Amazon EKS cluster on Amazon AWS with:</p><pre><code>ops config eks
ops cloud eks create
</code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h3 id=azure-aks>Azure AKS</h3><p>Configure and install an Azure AKS cluster on Microsoft Azure with:</p><pre><code>ops config aks
ops cloud aks create
</code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h3 id=google-cloud-gke>Google Cloud GKE</h3><p>Configure and install a Google Cloud GKE with:</p><pre><code>ops config gke
ops cloud gke create
</code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h2 id=cluster-install>Cluster Install</h2><p>In short, if you have access to kubernetes cluster, you can install
OpenServerless with:</p><pre><code>ops setup cluster
</code></pre><p>For a slightly longer discussion, checking prerequisites before
installing, read on.</p><h3 id=prerequisites-to-install>Prerequisites to install</h3><p>If you have access to a Kubernetes cluster with:</p><ol><li><p>Access to the <code>cluster-admin</code> role</p></li><li><p>Block storage configured as the default storage class</p></li><li><p>The <code>nginx-ingress</code> installed</p></li><li><p>Knowledge of the IP address of your <code>nginx-ingress</code> controller</p></li></ol><p>you can install OpenServerless in it. You can read <a href=/docs/installation/quickstart/#../prereq/kubernetes/cluster/index.adoc>more details
here</a>.</p><p>You can get this access either by provisioning a Kubernetes cluster in
<a href=/docs/installation/quickstart/#cloud-cluster>cloud</a> or getting access to it from your system
administrator.</p><p>Whatever the way you get access to your Kubernetes cluster, you will end
up with a configuration file which is usually stored in a file named
<code>.kube/config</code> in your home directory. This file will give access to the
Kubernetes cluster to install OpenServerless.</p><h3 id=performing-the-installation>Performing the installation</h3><p>To install, first, verify you have actually access to the Kubernetes
cluster, by running this command:</p><pre><code>ops debug kube info
</code></pre><p>You should get information about your cluster, something like this:</p><p>Kubernetes control plane is running at
<code>\https://api.nuvolaris.osh.n9s.cc:6443</code></p><p>Now you can finally install OpenServerless with the command:</p><pre><code>ops setup cluster
</code></pre><p>Wait until the process is complete and if there are no errors,
OpenServerless is installed and ready to go.</p><p>Once it is installed, you can proceed to read the
<a href=/docs/installation/quickstart/#../../tutorial/index.adoc>Tutorial</a> to learn how to code with it.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-1642ee41003decf99634e3d9c714851c>2 - Download</h1><div class=lead>Download OpenServerless with ops CLI</div><h2 id=download-and-install-ops>Download and Install <code>ops</code></h2><h3 id=what-is-ops>What is <code>ops</code>?</h3><p>As you can guess it helps with operations: ops is the <strong>OP</strong>en<strong>S</strong>erverless CLI.</p><p>It is a task executor on steroids.</p><ul><li>it embeds task, wsk and a lot of other utility commands (check with ops -help)</li><li>automatically download and update command line tools, prerequisites and tasks</li><li>taskfiles are organized in commands and subcommands, hierarchically and are powered by docopt</li><li>it supports plugins</li></ul><p>The predefined set of tasks are all you need to install and manage an OpenServerless cluster.</p><h3 id=download-links>Download links</h3><p>You can install OpenServerless using its Command Line Interface, <code>ops</code>.</p><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=warning><p class=quote-title><strong>WARNING</strong></p><p>Since we are in a preview phase, this is not an official link approved by the Apache Software Foundation.</p></blockquote><p>Quick install in Linux, MacOS and Windows with WSL or GitBash:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>curl -sL bit.ly/get-ops <span style=color:#000;font-weight:700>|</span> bash
</span></span></code></pre></div><p>Quick install in Windows with PowerShell</p><p>Open a powershell. Then give these commands:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-powershell data-lang=powershell><span style=display:flex><span><span style=color:#204a87>Set-ExecutionPolicy</span> <span style=color:#000>Bypass</span> <span style=color:#000>-Scope</span> <span style=color:#204a87;font-weight:700>Process</span> <span style=color:#000>-Force</span>
</span></span><span style=display:flex><span><span style=color:#204a87>irm </span><span style=color:#000>bit</span><span style=color:#000;font-weight:700>.</span><span style=color:#000>ly</span><span style=color:#000;font-weight:700>/</span><span style=color:#204a87>get-ops</span><span style=color:#000>-exe</span> <span style=color:#000;font-weight:700>|</span> <span style=color:#204a87>iex
</span></span></span></code></pre></div><h3 id=after-the-installation>After the installation</h3><p>Once installed, in the first run <code>ops</code> will tell to update the tasks
executing:</p><p><code>ops -update</code></p><p>This command updates the OpenServerless &ldquo;tasks&rdquo; (its internal logic) to the
latest version. This command should be also executed frequently, as the
tasks are continuously evolving and expanding.</p><p><code>ops</code> will suggest when to update them (at least once a day).</p><p>You normally just need to update the tasks but sometimes you also need
to update <code>ops</code> itself. The system will detect when it is the case and
tell you what to do.</p><h3 id=where-to-find-more-details>Where to find more details:</h3><p>For more details, please visit the Github page of <a href=https://github.com/apache/openserverless-cli>Openserverless Cli</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-d88677d4167778f5d3ca8a81629227c5>3 - Prerequisites</h1><h2 id=prerequisites-to-install-openserverless>Prerequisites to install OpenServerless</h2><p>This page lists the prerequisites to install OpenServerless in various
environments.</p><p>You can install OpenServerless:</p><ul><li><p>for <strong>development</strong> in a <a href=/docs/installation/prereq/#single-node-development-installation>single node</a> environment,
either in your local machine or in a Linux server.</p></li><li><p>for <strong>production</strong>, in a <a href=/docs/installation/prereq/#multi-node-production-installation>multi node</a> environment
provided by a Kubernetes cluster.</p></li></ul><h3 id=single-node-development-installation>Single Node development installation</h3><p>For <strong>development</strong> purposes, you can install a single node
OpenServerless deployment in the following environments as soon as the
following requirements are satisfied:</p><ul><li><p>To install in your <a href=/docs/installation/install/local/>local machine</a>, you need
<a href=/docs/installation/prereq/docker/>Docker Desktop</a></p></li><li><p>To install in a <strong>single node</strong>
<a href=/docs/installation/install/server/>Linux server</a>, you need a server with <a href=/docs/installation/prereq/server/>passwordless ssh access and sudo</a>.</p></li></ul><p>Our installer can automatically install a Kubernetes environment, using
<a href=https://k3s.io>K3S</a>, but if you prefer you can install a single-node
Kubernetes instance by yourself.</p><p>If you choose to install Kubernetes on your server, we provide support
for:</p><ul><li><p><a href=/docs/installation/prereq/k3s/>SuSE K3S</a></p></li><li><p><a href=/docs/installation/prereq/mk8s>Canonical MicroK8S</a></p></li></ul><h3 id=multi-node-production-installation>Multi Node production installation</h3><p>For <strong>production</strong> purposes, you need a multi-node Kubernetes cluster
that satisfies <a href=/docs/installation/prereq/kubernetes/>those requirements</a>,
accessible with its <code>kubeconfig</code> file.</p><p>If you have such a cluster, you can install
<a href=/docs/installation/install/cluster/>OpenServerless in a Kubernetes cluster</a></p><p>If you do not have a cluster and you need to setup one, we provide
support for provisioning a suitable cluster that satisfied our
requirements for the following Kubernetes environments:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/eks/>EKS in Amazon AWS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/>AKS in Microsoft Azure</a></p></li><li><p><a href>GKE in Google Cloud</a></p></li><li><p><a href>RedHat OpenShift</a></p></li></ul><p>Once you have a suitable Kubernetes cluster, you can proceed
<a href=/docs/installation/install/>installing OpenServerless</a>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-0224021be1c39f3dd5683066e33d007c>3.1 - Local Docker</h1><div class=lead>Install OpenServerless with Docker locally</div><h2 id=prerequisites-to-install-openserverless-with-docker>Prerequisites to install OpenServerless with Docker</h2><p>You can install OpenServerless on your local machine using Docker. This
page lists the prerequisits.</p><p>First and before all you need a computer with at least 16 GB of memory
and 30GB of available space.</p><blockquote><p><strong>IMPORTANT</strong></p><p>8GB are definitely <strong>not enough</strong> to run OpenServerless on your local
machine.</p></blockquote><p>Furthermore, you need to install Docker. Let’s see the which one to
install and configure if you have:</p><ol><li><a href=/docs/installation/prereq/docker/#windows>Windows</a></li><li><a href=/docs/installation/prereq/docker/#macos>MacOS</a></li><li><a href=/docs/installation/prereq/docker/#linux>Linux</a></li></ol><h3 id=windows>Windows</h3><p>You require the 64 bit edition in Intel Architecture of a recent version
of Windows (at least version 10). The installer <code>ops</code> does not run on 32
bit versions nor in the ARM architecture.</p><p>Download and install <a href=https://www.docker.com/products/docker-desktop/>Docker
Desktop</a> for Windows.</p><p>Once installed, you can proceed
<a href=/docs/installation/configure/>configuring OpenServerless</a> for the
installation.</p><h3 id=macos>MacOS</h3><p>You require a recent version of MacOS (at least version 11.xb BigSur).
The installer <code>ops</code> is available both for Intel and ARM.</p><p>Download and install <a href=https://www.docker.com/products/docker-desktop/>Docker
Desktop</a> for MacOS.</p><p>Since MacOS uses a virtual machine for Docker with a constrained memory.
you also need also to reserve at least 8GB.</p><blockquote><p><strong>IMPORTANT</strong></p><p>On MacOS, Docker defaults to 2GB memoery and they are definitely <strong>not enough</strong> to run
OpenServerless on your local machine.</p></blockquote><p><img src=/docs/installation/images/install_docker_desktop.png alt></p><p>Instructions to increase the memory reserved to Docker Desktopo on
MacOS:</p><ul><li><p>click on the Docker Desktop icon in the menu</p></li><li><p>select Preferences</p></li><li><p>click on Resources</p></li><li><p><em>increase the reserved memory up to (at least) 8GB</em></p></li><li><p>click on <code>Apply & Restart</code></p></li></ul><p>Once installed, you can proceed
<a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p><h3 id=linux>Linux</h3><p>Docker Desktop is available also on Linux, however we advice to install
instead the <a href=https://docs.docker.com/engine/install/#server>Server Docker
Engine</a></p><p>On Linux, the Docker Engine for the server does not run in a virtual
machine, so it is faster and uses less memory.</p><p>Once installed, you can proceed
<a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-b0ef4b2e79b17c0bf42df9cbc4da7029>3.2 - Linux Server</h1><div class=lead>Install OpenServerless in a Linux server</div><h2 id=prerequisites-to-install-openserverless-in-a-linux-server>Prerequisites to install OpenServerless in a Linux server</h2><p>You can install OpenServerless on any server either in your intranet or
on in Internet running a Linux distribution, with the following
requirements:</p><ol><li><p>You know the <strong>IP address or DNS name</strong> of the server on Internet or
in your Intranet.</p></li><li><p>The server requires at least 8GB of memory and 30GB of disk space
available.</p></li><li><p>It should be running a Linux distribution <a href=https://docs.k3s.io/installation/requirements>supported by
K3S</a>.</p></li><li><p>You must open the firewall to access ports 80, 443 and 6443 (for
K3S) or 16443 (for MicroK8S) from your machine.</p></li><li><p>You have to install a
<a href=/docs/installation/prereq/server/generic/#ssh>public ssh key</a> to access it
without a password.</p></li><li><p>You have to configure
<a href=/docs/installation/prereq/server/generic/#sudo>sudo</a> to execute root
commands without a password.</p></li></ol><p>You can:</p><ul><li><p>get a server on any cloud provider or even install by yourself and
then <a href=/docs/installation/prereq/server/generic/>configure it</a></p></li><li><p>provision such a server with <code>ops</code>
<a href=/docs/installation/prereq/server/aws/>on Amazon Web Services</a></p></li><li><p>provision such a server with <code>ops</code> on
<a href>on Google Cloud Platform</a></p></li></ul><p>Once you have such a server you can optionally (it is not required)
install <a href=/docs/installation/prereq/server/k3s/>K3S</a> or
<a href=/docs/installation/prereq/server/mk8s/>MicroK8S</a> in it.</p><p>Once you have configured you server, you can proceed
<a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-c8f8a7091cc35f968fc5e121e51c459b>3.2.1 - SSH and Sudo</h1><div class=lead>General prerequisites to install OpenServerless</div><h2 id=configure-a-generic-linux-server-to-install-openserverless>Configure a generic Linux server to install OpenServerless</h2><p>If you have access to a generic Linux server, to be able to install
OpenServerless it needs to:</p><ol><li><p>be accessible without a password with <code>ssh</code></p></li><li><p>be able to run root commands without a password with <code>sudo</code></p></li><li><p>open the ports 80, 443 and 6443 or 16443</p></li></ol><p>If your server does not already satisfy those requirements, read below
for information how to create a <a href=/docs/installation/prereq/server/generic/#sshkey>sshkey</a>,
<a href=/docs/installation/prereq/server/generic/#sudo>configure sudo</a> and <a href=/docs/installation/prereq/server/generic/#firewall>open the firewall</a></p><h3 id=sshkey>Installing a public SSH key</h3><p>To connect to a server without a password using <code>openssh</code> (used by the
installer), you need a couple of files called <strong>ssh keys</strong>.</p><p>You can generate them on the command line using this command:</p><pre><code>ssh-keygen
</code></pre><p>It will create a couple of files, typically called:</p><ul><li><p><code>~/.ssh/id_rsa</code></p></li><li><p><code>~/.ssh/id_rsa.pub</code></p></li></ul><p>where <code>~</code> is your home directory.</p><p>You have to keep secret the <code>id_rsa</code> file because it is the private key
and contains the information to identify you uniquely. Think to is as
your password.</p><p>You can copy the <code>id_rsa.pub</code> in the server or even share it publicly,
as it is the public key. Think to it as your login name, and adding this
file to the server adds you to the users who can login into it.</p><p>Once you have generated the public key, access your server, then edit
the file <code>~/.ssh/authorized_keys</code> adding the public key to it.</p><p>It is just one line, contained in the <code>id_rsa.pub</code> file.</p><p>Create the file if it does not exist. Append the line to the file (as a
single line) if it already exists. Do not remove other lines if you do
not want to remove access to other users.</p><h3 id=sudo>Configure Sudo</h3><p>You normally access Linux servers using a user that is <strong>not</strong> <code>root</code>
(the system administrator with unlimited power on the system).</p><p>Depending on the system, the user to use to access be <code>ubuntu</code>,
<code>ec2-user</code>, <code>admin</code> or something else entirely. However if you have
access to the server, the information of which user to use should have
been provided, including a way to access to the <code>root</code> user.</p><p>You need to give this user the right to execute commands as <code>root</code>
without a password, and you do this by configuring the command <code>sudo</code>.</p><p>You usually have either access to root with the <code>su</code> command, or you can
execute <code>sudo</code> with a password.</p><p>Type either <code>su</code> or <code>sudo bash</code> to become root and edit the file
<code>/etc/sudoers</code> adding the following line:</p><pre><code>&lt;user&gt; ALL=(ALL) NOPASSWD:ALL
</code></pre><p>where <code>&lt;user></code> is the user you use to log into the system.</p><h3 id=firewall>Open the firewall</h3><p>You need to open the following ports in the firewall of the server:</p><ul><li><p>443 for HTTPS</p></li><li><p>80 for HTTP and provisioning certificates</p></li><li><p>6443 (K3S) or 16443 (MicroK8S) for Kubernetes</p></li></ul><p>For information on how to open the firewall, please consult the
documentation of your cloud provider or contact your system
administrator, as there are no common procedures and they depends on the
cloud provider.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-7de93c022dce0399d0fb529ba96bc7e6>3.2.2 - Server on AWS</h1><div class=lead>Prerequisites to install OpenServerless in AWS</div><h2 id=provision-a-linux-server-in-amazon-web-services>Provision a Linux server in Amazon Web Services</h2><p>You can provision a server suitable to install OpenServerless in cloud
provider <a href=https://aws.amazon.com/>Amazon Web Services</a>
<a href=/docs/installation/prereq/server/aws/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>aws</code>, the <a href=/docs/installation/prereq/server/aws/#install-cli>AWS CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/server/aws/#get-credentials>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/server/aws/#configure>configure AWS</a></p></li><li><p><a href=/docs/installation/prereq/server/aws/#provision>provision a server</a></p></li><li><p>retrieve the <a href=/docs/installation/prereq/server/aws/#retrieve-ip>ip address</a> to configure a DNS name</p></li></ol><p>Once you have a Linux server up and running you can proceed
<a href=/docs/installation/configure/>configuring</a> and
<a href=/docs/installation/install/cluster/>installing OpenServerless</a>.</p><h3 id=install-cli>Installing the AWS CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html>AWS CLI version
2</a>,
so you need to dowload and install it <a href=https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html>following those
instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the
following command:</p><pre><code>aws --version
</code></pre><p>you should receive something like this:</p><pre><code>aws-cli/2.9.4 Python/3.9.11 Linux/5.19.0-1025-aws exe/x86_64.ubuntu.22 prompt/off
</code></pre><p>Ensure the version is at least 2.</p><h3 id=get-credentials>Getting the Access and Secret key</h3><p>Next step is to retrieve credentials, in the form of an access key and a
secret key.</p><p>So you need to:</p><ul><li>access the AWS console
<a href=https://repost.aws/knowledge-center/create-access-key>following those instructions</a>
create an access key and secret key;</li><li>give to the credentials the minimum required permissions
<a href=https://eksctl.io/usage/minimum-iam-policies/>as described here</a> to build an
EKS cluster.</li></ul><p>You will end up with a couple of string as follows:</p><pre><code>Sample AWS Access Key ID: AKIAIOSFODNN7EXAMPLE Sample AWS Secret Access
Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
</code></pre><p>Take note of them as you need them for configuring out CLI.</p><h3 id=configure>Configure AWS to provision a server</h3><p>Before you can provision a Linux server you have to configure AWS typing
the command:</p><pre><code>ops config aws
</code></pre><p>The system will then ask the following questions:</p><pre><code>*** Please, specify AWS Access Id and press enter.
AKIAIOSFODNN7EXAMPLE
*** Please, specify AWS Secret Key and press enter.
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
*** Please, specify AWS Region to use and press enter.
To get a list of valid values use:
aws ec2 describe-regions --output table
Just press enter for default [us-east-1]:
*** Please, specify AWS public SSH key and press enter.
If you already have a public SSH key in AWS, provide its name here.
If you do not have it, generate a key pair with the following command:
ssh-keygen
The public key defaults to ~/.ssh/id_rsa.pub and you can import with:
aws ec2 import-key-pair --key-name nuvolaris-key --public-key-material --region=&lt;your-region&gt; fileb://~/.ssh/id_rsa.pub
Just press enter for default [devkit-74s]:
*** Please, specify AWS Image to use for VMs and press enter.
The suggested image is an Ubuntu 22 valid only for us-east-1
Please check AWS website for alternative images in other zones
Just press enter for default [ami-052efd3df9dad4825]:
*** Please, specify AWS Default user for image to use for VMs and press enter.
Default user to access the selected image.
Just press enter for default [ubuntu]:
*** Please, specify AWS Instance type to use for VMs and press enter.
The suggested instance type has 8GB and 2vcp
To get a list of valid values, use:
aws ec2 describe-instance-types --query 'InstanceTypes[].InstanceType' --output table
Just press enter for default [t3a.large]:
*** Please, specify AWS Disk Size to use for VMs and press enter.
Just press enter for default [100]:
</code></pre><h3 id=provision>Provision a server</h3><p>You can provision one or more servers using <code>ops</code>. The servers will use
the parameters you have just configured.</p><p>You can create a new server with:</p><pre><code>ops cloud aws vm-create &lt;server-name&gt;
</code></pre><blockquote><p><strong>IMPORTANT</strong></p><p>Replace <code>&lt;server-name></code> with a name you choose, for example
<code>ops-server</code></p></blockquote><p>The command will create a new server in AWS with the parameters you
specified in configuration.</p><p>You can also:</p><ol><li><p>list servers you created with <code>ops cloud aws vm-list</code></p></li><li><p>delete a server you created and you do not need anymore with
<code>ops cloud aws vm-delete &lt;server-name></code></p></li></ol><h3 id=retrieve-ip>Retrieve IP</h3><p>The server will be provisioned with an IP address assigned by AWS.</p><p>You can read the IP address of your server with</p><pre><code>ops cloud aws vm-getip &lt;server-name&gt;
</code></pre><p>You need this IP when <a href=/docs/installation/configure/dns/>configuring a DNS name</a> for
the server.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-3a59e283e51e41b6d5b36b0ca31c690c>3.2.3 - Server on Azure</h1><div class=lead>Prerequisites to install OpenServerless in Azure</div><h2 id=provision-a-linux-server-in-azure-cloud-platform>Provision a Linux server in Azure Cloud Platform</h2><p>You can provision a server suitable to install OpenServerless in cloud
provider <a href=https://azure.microsoft.com/>Azure</a>
<a href=/docs/installation/prereq/server/azure/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>az</code>, the <a href=/docs/installation/prereq/server/azure/#install-cli>Azure CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/server/azure/#connect-subscription>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/server/azure/#configure>configure Azure</a></p></li><li><p><a href=/docs/installation/prereq/server/azure/#provision>provision a server</a></p></li><li><p>retrieve the <a href=/docs/installation/prereq/server/azure/#retrieve-ip>ip address</a> to configure a DNS name</p></li></ol><p>Once you have a Linux server up and running you can proceed
<a href=/docs/installation/configure/>configuring</a> and
<a href=/docs/installation/install/cluster/>installing OpenServerless</a>.</p><h3 id=install-cli>Installing the Azure CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://learn.microsoft.com/en-us/cli/azure>az</a>,
command so you need to dowload and install it <a href=https://learn.microsoft.com/en-us/cli/azure/install-azure-cli>following those
instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the
following command:</p><pre><code>az version
</code></pre><p>you should receive something like this:</p><pre><code>{
&quot;azure-cli&quot;: &quot;2.64.0&quot;,
&quot;azure-cli-core&quot;: &quot;2.64.0&quot;,
&quot;azure-cli-telemetry&quot;: &quot;1.1.0&quot;,
&quot;extensions&quot;: {
&quot;ssh&quot;: &quot;2.0.5&quot;
}
}
</code></pre><p>Ensure the version is at least 2.64.0</p><h3 id=connect-subscription>Connect a subscription</h3><p>Next step is to connect <code>az</code> to a valid Azure subscription. Azure
supports <a href=https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli>several authentication methods</a>: check
which one you prefer.</p><p>The easiest is the one described in <a href=https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli-interactively>Sign in interactively</a>:</p><p>az login</p><p>This will open a browser and you will asked to login to you azure account. Once logged in, the <code>az</code> command will be
automatically connected to the choosen subscription.</p><p>To check if the <code>az</code> command is properly connected to your subscription, check the output of this command:</p><pre tabindex=0><code> $ az account list --query &#34;[].{subscriptionId: id, name: name, user: user.name}&#34; --output table
SubscriptionId Name User
------------------------------------ --------------------------- -------------------------
xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx Microsoft Azure Sponsorship openserverless@apache.org
</code></pre><h3 id=configure>Configuring Azure to provision a server</h3><p>Before you can provision a Linux server you have to configure Openserverless for Azure typing
the command:</p><pre><code>ops config azcloud
</code></pre><p>The system will then ask the following questions:</p><pre tabindex=0><code> *** Please, specify Azure Project Id and press enter.
Azure Project Id: openserverless-k3s
*** Please, specify Azure Zone and press enter.
To get a list of valid values use:
az account list-locations -o table
Just press enter for default [eastus]:
Azure Zone:
*** Please, specify Azure virtual machine type and press enter.
To get a list of valid values, use:
az vm list-sizes --location &lt;location&gt; -o table
where &lt;location&gt; is your current location.
Just press enter for default [Standard_B4ms]:
Azure virtual machine type:
*** Please, specify Azure vm disk size in gigabyte and press enter.
Just press enter for default [50]:
Azure vm disk size in gigabyte:
*** Please, specify Azure Cloud public SSH key and press enter.
If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command:
ssh-keygen
The public key defaults to ~/.ssh/id_rsa.pub.
Just press enter for default [~/.ssh/id_rsa.pub]:
Azure Cloud public SSH key:
*** Please, specify Azure Cloud VM image and press enter.
Just press enter for default [Ubuntu2204]:
Azure Cloud VM image:
</code></pre><h3 id=provision>Provision a server</h3><p>You can provision one or more servers using <code>ops</code>. The servers will use
the parameters you have just configured.</p><p>You can create a new server with:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span> ops cloud azcloud vm-create &lt;server-name&gt;
</span></span></code></pre></div><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title><strong>IMPORTANT</strong></p><p>Replace <code>&lt;server-name></code> with a name you choose, for example
<code>ops-server</code></p></blockquote><p>The command will create a new server in Azure Cloud with the parameters
you specified in configuration.</p><p>You can also:</p><ol><li><p>list servers you created with <code>ops cloud azcloud vm-list</code></p></li><li><p>delete a server you created and you do not need anymore with
<code>ops cloud azcloud vm-delete &lt;server-name></code></p></li></ol><h3 id=retrieve-ip>Retrieve IP</h3><p>The server will be provisioned with an IP address assigned by Azure
Cloud.</p><p>You can read the IP address of your server with</p><pre><code>ops cloud azcloud vm-getip &lt;server-name&gt;
</code></pre><p>You need this IP when <a href=/docs/installation/configure/dns/>configuring a DNS name</a> for
the server.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-8e157365d16cb8fe54ef2c7d50505022>3.2.4 - Install K3S</h1><div class=lead>Prerequisites to install OpenServerless in K3S</div><h2 id=install-k3s-in-a-server>Install K3S in a server</h2><p>You can install OpenServerless as <a href=/docs/installation/prereq/server/k3s/#../../../install/server/index.adoc>described
here</a>, and you do not need to
install any Kubernetes in it, as it is installed as part of the
procedure. In this case it installs <a href=https://k3s.io>K3S</a>.</p><p>Or you can <a href=/docs/installation/prereq/server/k3s/#installing-k3s>install K3S in advance</a>, and then proceed
<a href=/docs/installation/prereq/server/k3s/#../../../configure/index.adoc>configuring</a> and then installing
OpenServerless <a href=/docs/installation/prereq/server/k3s/#../../../install/cluster/index.adoc>as in any other Kubernetes
cluster</a>.</p><h3 id=installing-k3s>Installing K3S in a server</h3><p>Before installing ensure you have <a href=/docs/installation/prereq/server/k3s/#../../../prereq/index.adoc>satified the
prerequisites</a>, most notably:</p><ol><li><p>you know the <strong>IP address or DNS name</strong></p></li><li><p>your server operating system satisfies the <a href=https://docs.k3s.io/installation/requirements>K3S
requirements</a></p></li><li><p>you have passwordless access with ssh</p></li><li><p>you have a user with passwordless sudo rights</p></li><li><p>you have opened the port 6443 in the firewall</p></li></ol><p>Then you can use the following subcommand to install in the server:</p><pre><code>ops cloud k3s create &lt;server&gt; [&lt;username&gt;]
</code></pre><p>where <code>&lt;server></code> is the <strong>IP address or DNS name</strong> to access the server,
and the optional <code>&lt;username></code> is the user you use to access the server:
if <username>is not specified, the <code>root</code> username will be used.</p><p>Those pieces of information should have been provided when provisioning
the server.</p><blockquote><p><strong>IMPORTANT</strong></p><p>If you installed a Kubernetes cluster in the server this way, you should
proceed installing OpenServerless as in
<a href=/docs/installation/install/cluster/>a Kubernetes cluster</a>, <strong>not</strong>
as a server.</p></blockquote><p>The installation retrieves also a Kubernetes configuration file, so you
can proceed to installing it without any other step involved.</p><h3 id=additional-commands>Additional Commands</h3><p>In addition to <code>create</code> the following subcommands are also available:</p><ul><li><p><code>ops cloud k3s delete &lt;server> [&lt;username>]</code>:
uninstall K3S from the server</p></li><li><p><code>ops cloud k3s kubeconfig &lt;server> [&lt;username>]</code>:
retrieve the kubeconfig from the K3S server</p></li><li><p><code>ops cloud k3s info</code>: some information about the server</p></li><li><p><code>ops cloud k3s status</code>: status of the server</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-b4e9b33b69177f5f056217b0d67c2031>3.2.5 - Install MicroK8S</h1><div class=lead>Prerequisites to install OpenServerless in K8S</div><h2 id=install-microk8s-in-a-server>Install MicroK8S in a server</h2><p>You can install OpenServerless as
<a href=/docs/installation/install/server/>described here</a> and you do not need to
install any Kubernetes in it, as it is installed as part of the procedure. In
this case it installs K3S.</p><p>But you can <a href=/docs/installation/prereq/server/mk8s/#install-k8s>install MicroK8S</a> instead, if you
prefer. Check here for <a href=https://microk8s.io/>informations about MicroK8S</a>.</p><p>If you install MicroK8S in your server, you can then proceed
<a href=/docs/installation/configure/>configuring</a> and then installing OpenServerless
<a href=/docs/installation/install/cluster/>as in any other Kubernetes cluster</a>.</p><h3 id=install-k8s>Installing MicroK8S in a server</h3><p>Before installing ensure you have
<a href=/docs/installation/prereq/server/>satisfied the prerequisites</a>, most notably:</p><ol><li><p>you know the <strong>IP address or DNS name</strong></p></li><li><p>you have passwordless access with ssh</p></li><li><p>you have an user with passwordless sudo rights</p></li><li><p>you have opened the port <strong>16443</strong> in the firewall</p></li></ol><p>Furthermore, since MicroK8S is installed using <code>snap</code>, you also need to
<a href=https://snapcraft.io/docs/installing-snapd>install <code>snap</code></a>.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>While <code>snap</code> is available for many linux distributions, it is typically
pre-installed and well supported in in Ubuntu and its derivatives. So we
recommend MicroK8S only if you are actually using an Ubuntu-like Linux
distribution.</p></blockquote><p>If you system is suitable to run MicroK8S you can use the following
subcommand to install in the server:</p><pre><code>ops cloud mk8s create SERVER=&lt;server&gt; USERNAME=&lt;username&gt;
</code></pre><p>where <code>&lt;server></code> is <strong>IP address or DNS name</strong> to access the server, and
<code>&lt;username></code> is the user you use to access the server.</p><p>Those informations should have been provided when provisioning the
server.</p><blockquote><p><strong>IMPORTANT</strong></p><p>If you installed a Kubernetes cluster in the server in this way, you
should proceed installing OpenServerless as in
<a href=/docs/installation/install/cluster/>a Kubernetes cluster</a>, <strong>not</strong> as a server.</p></blockquote><p>The installation retrieves also a kubernets configuration file so you
can proceed to installing it without any other step involved.</p><h3 id=additional-commands>Additional Commands</h3><p>In addition to <code>create</code> you have available also the following
subcommands:</p><ul><li><p><code>ops cloud mk8s delete SERVER=&lt;server> USERNAME=&lt;username></code>:
uninstall K3S from the server</p></li><li><p><code>ops cloud mk8s kubeconfig SERVER=&lt;server> USERNAME=&lt;username></code>:
retrieve the kubeconfig from the MicroK8S server</p></li><li><p><code>ops cloud mk8s info</code>: informations about the server</p></li><li><p><code>ops cloud mk8s status</code>: status of the server</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-f32ce604d7868701850b6029ab564835>3.3 - Kubernetes Cluster</h1><div class=lead>Install OpenServerless in a Kubernetes cluster</div><h2 id=prerequisites-to-install-openserverless-in-a-kubernetes-cluster>Prerequisites to install OpenServerless in a Kubernetes cluster</h2><p>You can install OpenServerless in any Kubernetes cluster which
<a href=/docs/installation/prereq/kubernetes/cluster/>satisfy some requirements</a>.</p><p>Kubernetes clusters are available pre-built from a variety of cloud
providers. We provide with our <code>ops</code> tool the commands to install a
Kubernetes cluster ready for OpenServerless in the following
environments:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/eks/>Amazon EKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/>Azure AKS</a></p></li><li><p><a href>Google GKE</a></p></li><li><p><a href>RedHat OpenShift</a></p></li></ul><p>You can also provision a suitable cluster by yourself, in any cloud or
on premises, ensuring the prerequites are satisfied.</p><p>Once provisioned, you will receive a configuration file to access the
cluster, called <code>kubeconfig</code>.</p><p>This file should be placed in <code>~/.kube/config</code> to give access to the
cluster</p><p>If you have this file, you can check if you have access to the cluster
with the command:</p><pre><code>ops debug kube info
</code></pre><p>You should see something like this:</p><pre><code>Kubernetes control plane is running at https://xxxxxx.yyy.us-east-1.eks.amazonaws.com
</code></pre><p>Once you have got access to the Kubernetes cluster, either installing
one with out commands or provisioning one by yourself, you can proceed
<a href=/docs/installation/configure/>configuring the installation</a> and then
<a href=/docs/installation/install/cluster/>installing OpenServerless</a> in the
cluster.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-1fd119711d8fba54dc56350b34daad88>3.3.1 - Amazon EKS</h1><div class=lead>Prerequisites for Amazon EKS</div><h2 id=prerequisites-to-install-openserverless-in-an-amazon-eks-cluster>Prerequisites to install OpenServerless in an Amazon EKS Cluster</h2><p><a href=https://aws.amazon.com/eks/>Amazon EKS</a> is a pre-built Kubernetes
cluster offered by the cloud provider <a href=https://aws.amazon.com/>Amazon Web
Services</a>.</p><p>You can create an EKS Cluster in Amazon AWS for installing using
OpenServerless using <a href=/docs/installation/download/>ops</a> as follows:</p><ol><li><p>install <code>aws</code>, the <a href=/docs/installation/prereq/kubernetes/eks/#install-cli>AWS CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/kubernetes/eks/#get-credentials>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/eks/#configure>configure EKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/eks/#provision>provision EKS</a></p></li><li><p>optionally, retrieve the <a href=/docs/installation/prereq/kubernetes/eks/#retrieve-lb>load balancer address</a> to
configure a DNS name</p></li></ol><p>Once you have EKS up and running you can proceed
<a href=/docs/installation/prereq/kubernetes/eks/#configure.adoc>configuring</a> and <a href=/docs/installation/prereq/kubernetes/eks/#install-cluster.adoc>installing
OpenServerless</a>.</p><h3 id=install-cli>Installing the AWS CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html>AWS CLI version
2</a>,
so you need to dowload and install it <a href=https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html>following those
instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the
following command:</p><pre><code>aws --version
</code></pre><p>you should receive something like this:</p><pre><code>aws-cli/2.9.4 Python/3.9.11 Linux/5.19.0-1025-aws exe/x86_64.ubuntu.22 prompt/off
</code></pre><p>Ensure the version is at least 2.</p><h3 id=get-credentials>Getting the Access and Secret key</h3><p>Next step is to retrieve credentials, in the form of an access key and a
secret key.</p><p>So you need to: * access the AWS console <a href=https://repost.aws/knowledge-center/create-access-key>following those
instructions</a>
create an access key and secret key, * give to the credentials the
minimum required permissions <a href=https://eksctl.io/usage/minimum-iam-policies/>as described
here</a> to build an EKS
cluster.</p><p>You will end up with a couple of string as follows:</p><pre><code>Sample AWS Access Key ID: AKIAIOSFODNN7EXAMPLE Sample AWS Secret Access
Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
</code></pre><p>Take note of them as you need them for configuring out CLI.</p><h3 id=configure>Configuring Amazon EKS</h3><p>Once you have the access and secret key you can configure EKS with the
command <code>ops config eks</code> answering to all the questions, as in the
following example:</p><pre><code>$ ops config eks
*** Please, specify AWS Access Id and press enter.
AKIAIOSFODNN7EXAMPLE
*** Please, specify AWS Secret Key and press enter.
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
*** Please, specify AWS Region to use and press enter.
To get a list of valid values use:
aws ec2 describe-regions --output table
Just press enter for default [us-east-2]:
*** Please, specify AWS public SSH key and press enter.
If you already have a public SSH key in AWS, provide its name here.
If you do not have it, generate a key pair with the following command:
ssh-keygen
The public key defaults to ~/.ssh/id_rsa.pub and you can import with:
aws ec2 import-key-pair --key-name nuvolaris-key --public-key-material --region=&lt;your-region&gt; fileb://~/.ssh/id_rsa.pub
Just press enter for default [nuvolaris-key]:
*** Please, specify EKS Name for Cluster and Node Group and press enter.
Just press enter for default [nuvolaris]:
*** Please, specify EKS region and press enter.
To get a list of valid values use:
aws ec2 describe-regions --output table
Just press enter for default [us-east-1]:
*** Please, specify EKS number of worker nodes and press enter.
Just press enter for default [3]:
*** Please, specify EKS virtual machine type and press enter.
To get a list of valid values, use:
aws ec2 describe-instance-types --query 'InstanceTypes[].InstanceType' --output table
Just press enter for default [m5.xlarge]:
*** Please, specify EKS disk size in gigabyte and press enter.
Just press enter for default [50]:
*** Please, specify EKS Kubernetes Version and press enter.
Just press enter for default [1.25]:
</code></pre><h3 id=provision>Provisioning Amazon EKS</h3><p>Once you have configured it, you can create the EKS cluster with the
command:</p><pre><code>ops cloud eks create
</code></pre><p>It will take around 20 minutes to be ready. Please be patient.</p><p>At the end of the process, you will have access directly to the created
Kubernetes cluster for installation.</p><h3 id=retrieve-lb>Retrieving the Load Balancer DNS name</h3><p>Once the cluster is up and running, you need to retrieve the DNS name of
the load balancer.</p><p>You can read this with the command:</p><pre><code>ops cloud eks lb
</code></pre><p>Take note of the result as it is required for
<a href=/docs/installation/configure/dns/>configuring a dns name</a> for your cluster.</p><h3 id=additional-commands>Additional Commands</h3><p>You can delete the created cluster with: <code>ops cloud eks delete</code></p><p>You can extract again the cluster configuration, if you lose it,
reconfiguring the cluster and then using the command
<code>ops cloud eks kubeconfig</code>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-c5304e0f61e6fb87af4b9940c2922fec>3.3.2 - Azure AKS</h1><div class=lead>Prerequisites for Azure AKS</div><h2 id=prerequisites-to-install-openserverless-in-an-azure-aks-cluster>Prerequisites to install OpenServerless in an Azure AKS Cluster</h2><p><a href=https://aws.amazon.com/eks/>Azure AKS</a> is a pre-built Kubernetes
cluster offered by the cloud provider <a href=https://azure.microsoft.com/>Microsoft Azure</a>.</p><p>You can create an AKS Cluster in Microsoft Azure for installing using
OpenServerless using <a href=/docs/installation/prereq/kubernetes/aks/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>az</code>, the <a href=/docs/installation/prereq/kubernetes/aks/#install-cli>Azure CLI</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/#configure>configure AKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/#provision>provision AKS</a></p></li><li><p>optionally, retrieve the <a href=/docs/installation/prereq/kubernetes/aks/#retrieve-lb>load balancer address</a> to
configure a DNS name</p></li></ol><p>Once you have AKS up and running you can proceed
<a href=/docs/installation/prereq/kubernetes/aks/#configure.adoc>configuring</a> and <a href=/docs/installation/prereq/kubernetes/aks/#install-cluster.adoc>installing
OpenServerless</a>.</p><h3 id=install-cli>Installing the Azure CLI</h3><p>Our CLI <code>ops</code> uses under the hood the <a href=https://learn.microsoft.com/en-us/cli/azure/>Azure
CLI</a>, so you need to
dowload and install it
<a href=https://learn.microsoft.com/en-us/cli/azure/install-azure-cli>following those instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the
following command:</p><pre><code>az version
</code></pre><p>you should receive something like this:</p><pre><code>{
&quot;azure-cli&quot;: &quot;2.51.0&quot;,
&quot;azure-cli-core&quot;: &quot;2.51.0&quot;,
&quot;azure-cli-telemetry&quot;: &quot;1.1.0&quot;,
&quot;extensions&quot;: {}
}
</code></pre><h3 id=configure>Configuring Azure AKS</h3><p>Before provisioning your AKS cluster you need to configure AKS with the
command <code>ops config aks</code> answering to all the questions, as in the
following example:</p><pre><code>$ ops config aks
*** Please, specify AKS Name for Cluster and Resource Group and press enter.
Just press enter for default [nuvolaris]:
*** Please, specify AKS number of worker nodes and press enter.
Just press enter for default [3]:
*** Please, specify AKS location and press enter.
To get a list of valid values use:
az account list-locations -o table
Just press enter for default [eastus]:
*** Please, specify AKS virtual machine type and press enter.
To get a list of valid values use:
az vm list-sizes --location &lt;location&gt; -o table
where &lt;location&gt; is your current location.
Just press enter for default [Standard_B4ms]:
*** Please, specify AKS disk size in gigabyte and press enter.
Just press enter for default [50]:
*** Please, specify AKS public SSH key in AWS and press enter.
If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command:
ssh-keygen
The public key defaults to ~/.ssh/id_rsa.pub.
Just press enter for default [~/.ssh/id_rsa.pub]:
</code></pre><h3 id=provision>Provisioning Azure AKS</h3><p>Once you have configured it, you can create the AKS cluster with the
command:</p><pre><code>ops cloud aks create
</code></pre><p>It will take around 10 minutes to be ready. Please be patient.</p><p>At the end of the process, you will have access directly to the created
Kubernetes cluster for installation.</p><h3 id=retrieve-lb>Retrieving the Load Balancer DNS name</h3><p>Once the cluster is up and running, you need to retrieve the DNS name of
the load balancer.</p><p>You can read this with the command:</p><pre><code>ops cloud aks lb
</code></pre><p>Take note of the result as it is required for
<a href=/docs/installation/configure/dns/>configuring a dns name</a> for your cluster.</p><h3 id=additional-commands>Additional Commands</h3><p>You can delete the created cluster with: <code>ops cloud aks delete</code></p><p>You can extract again the cluster configuration, if you lose it,
reconfiguring the cluster and then using the command
<code>nuv cloud aks kubeconfig</code>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-e0ed70c138e5d50c8207cdcc1a07f4e0>3.3.3 - Generic Kubernetes</h1><div class=lead>Prerequisites for all Kubernetes</div><h2 id=kubernetes-cluster-requirements>Kubernetes Cluster requirements</h2><p>OpenServerless installs in any Kubernetes cluster which satisfies the
following requirements:</p><ul><li><p><code>cluster-admin</code> access</p></li><li><p>at least 3 worker nodes with 4GB of memory each</p></li><li><p>support for block storage configured as default storage class</p></li><li><p>support for LoadBalancer services</p></li><li><p>the <a href=https://github.com/kubernetes/ingress-nginx>nginx ingress</a>
already installed</p></li><li><p>the <a href=https://cert-manager.io/>cert manager</a> already installed</p></li></ul><p>Once you have such a cluster, you need to retrieve the IP address of the
Load Balancer associated with the Nginx Ingress. In the default
installation, it is installed in the namespace <code>nginx-ingress</code> and it is
called <code>ingress-nginx-controller</code>.</p><p>In the default installation you can read the IP address with the
following command:</p><pre><code>kubectl -n ingress-nginx get svc ingress-nginx-controller
</code></pre><p>If you have installed it in some other namespace or with another name,
change the command accordingly.</p><p>The result should be something like this:</p><pre><code>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.0.9.99 20.62.156.19 80:30898/TCP,443:31451/TCP 4d1h
</code></pre><p>Take note of the value under <strong>EXTERNAL-IP</strong> as you need it in the next
step of installation, <a href=/docs/installation/configure/dns/>configuring DNS</a>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-f6b9a66f9506e4a7437691a389daca4f>4 - Configure OpenServerless</h1><h2 id=configuring-openserverless-installation>Configuring OpenServerless Installation</h2><p>This section guides configuring the OpenServerless installation.</p><p>Note that you can also skip this configuration, and install
OpenServerless without any configuration.</p><p>Once you configure the installation, you can proceed to
<a href=/docs/installation/install/>Install OpenServerless</a>.</p><p>You can then reconfigure the system later.</p><h3 id=minimal-configuration>Minimal Configuration</h3><p>Without any configuration, you get a minimal OpenServerless:</p><ul><li><p>only the serverless engine, no extra services</p></li><li><p>accessible is only in <code>http</code></p></li></ul><p>You can:</p><ul><li><p><a href=/docs/installation/configure/dns/>configure a DNS name or wildcard</a> for your server
or cluster, thus enabling SSL and static publishing.</p></li><li><p><a href=/docs/installation/configure/services/>enable some or all</a> of the integrated
services:</p><ul><li><p><a href=/docs/installation/configure/services/#static>Static</a>, publishing of static
content</p></li><li><p><a href=/docs/installation/configure/services/#redis>REDIS</a>, a powerful key-value store</p></li><li><p><a href=/docs/installation/configure/services/#minio>MinIO</a>, an object storage</p></li><li><p><a href=/docs/installation/configure/services/#postgres>Postgres</a>, a powerful SQL
database</p></li><li><p><a href=/docs/installation/configure/services/#ferretdb>FerretDB</a> a NO-SQL, MongoDB
compatible adapter for Postgres</p></li></ul></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-be207599c3aa71cb110feb062b890918>4.1 - DNS and SSL</h1><div class=lead>Configuring DNS and SSL</div><h2 id=dns-and-ssl>Configuring DNS and SSL</h2><p>You can use OpenServerless as just as a serverless engine, and use the
default IP or DNS provided when provisioned your server or cluster. If
you do so, only http is avaialble, and it is not secure.</p><p>If you want your server or cluster is available with a well-known
internet name, you can associate the <strong>IP address</strong> or the &ldquo;ugly&rdquo;
default DNS name of serveres or clusters to a DNS name of your choice,
to use it also to publish the static front-end of your server.</p><p>Furthermore, once you decided for a DNS name for your server, you can
enable the provisioning of an SSL certificate so you server will be
accessible with <code>https</code>.</p><p>In order to configure the DNS and the SSL the steps are:</p><ol><li><p><a href=/docs/installation/configure/dns/#ip-or-dns>retrieve the IP address or the the DNS name</a> of your
server or cluster</p></li><li><p><a href=/docs/installation/configure/dns/#register-dns>register a DNS name</a> of your choice with your
registration name provider</p></li><li><p><a href=/docs/installation/configure/dns/#configure-apihost>configure OpenServerless</a> so he knows of the DNS and
SSL and can use it</p></li></ol><h3 id=ip-or-dns>Retrieving the IP address or the DNS name</h3><p>If OpenServerless is installed in your local machine with Docker, cannot
configure any DNS nor SSL, so you can proceed <a href=/docs/installation/configure/services/>configuring the
services</a>.</p><p>If OpenServerless is installed in a single server, after you
<a href=/docs/installation/prereq/server/>satisfied the server prerequisites</a> you will
know the <strong>IP address or DNS name of you server</strong>.</p><p>If OpenServerless is installed in a Kubernetes cluster, after you
<a href=/docs/installation/prereq/server/>satisfied the server cluster</a> prerequisites
you know either the <strong>IP address or the DNS name of the load balancer</strong>.</p><h3 id=register-dns>Register a DNS name or wildcard</h3><p>Using the address of your server or cluster, you need either to
configure a DNS name your already own or <a href=https://www.icann.org/en/accredited-registrars>contact a domain name
registrar</a> to register a
new DNS name dedicated to your server or cluster.</p><p>You need at least one DNS name in a domain you control, for example
<code>nuvolaris.example.com</code> that points to you IP or address.</p><p>Note that:</p><ul><li><p>If you have an IP address to your load balancer you need to
configure an <code>A</code> record mapping <code>nuvolaris.example.com</code> to the IP
address of your server.</p></li><li><p>If you have a DNS name to your load balancer, you need to configure
a <code>CNAME</code> record mapping <code>nuvolaris.example.com</code> to the DNS name of
your server.</p></li></ul><blockquote><p>💡 <strong>NOTE</strong></p><p>If you are registering a dedicated domain name for your cluster, you are
advised to register wildcard name (<code>*</code>) for every domain name in
<code>example.com</code> will resolve to your server.</p></blockquote><p>Registering a wildcard is required to get a different website for for
multiple users.</p><h3 id=configure-apihost>Configure OpenServerless to use your DNS and and enable SSL</h3><p>Once you registrered a single DNS (for example <code>openserverless.example.com</code>)
or a wildcard DNS name (for example <code>*.example.com</code>) you can communicate
to the installer what is the main DNS name of your cluster or server, as
it is not able to detect it automatically. We call this the <code>&lt;apihost></code></p><blockquote><p>💡 <strong>NOTE</strong></p><p>If you have registered a single DNS name, like <code>openserverless.example.com</code>
use this name as <code>&lt;apihost></code>.</p><p>If you have registered a wildcard DNS name, you have to choose a DNS
name to be used as <code>&lt;apihost></code>.</p><p>We recommended you use a name starting with <code>api</code> since to avoid
clashes, user and domain names starting with <code>api</code> are reserved. So if
you have a <code>*.example.com</code> wildcard DNS available, use <code>api.example.com</code>
as your <code>&lt;apihost></code></p></blockquote><p>Once you decided what is your API host, you can configure this as
follows:</p><pre><code>ops config apihost &lt;apihost&gt;
</code></pre><p>This configuration will assign a well know DNS name as access point of
your OpenServerless cluster. However note it does <strong>NOT</strong> enable SSL.
Accessing to your cluster will happen using HTTP.</p><p>Since requests contain sensitive information like security keys, this is
<strong>highly insecure</strong>. You hence do this only for development or testing
but <strong>never</strong> for production.</p><p>Once you have a DNS name, enabling <code>https</code> is pretty easy, since we can
do it automatically using the free service <code>Let's Encrypt</code>. We have
however to provide a valid email address <code>&lt;email></code>.</p><p>Once you know your <code>&lt;apihost></code> and the <code>&lt;email></code> to receive
communications from Let’s Encrypt (mostly, when a domain name is
invalidated and needs to be renewed), you can configure your apihost and
enable SSL as follows:</p><pre><code>ops config apihost &lt;apihost&gt; --tls=&lt;email&gt;
</code></pre><p>Of course, replace the <code>&lt;apihost></code> with the actual DNS name you
registered, and <code>&lt;email></code> with your email address</p></div><div class=td-content style=page-break-before:always><h1 id=pg-29e1dfdb1ff6aee88ce1de74e2c1f27d>4.2 - Services</h1><div class=lead>Configure OpenServerless services</div><h2 id=configuring-openserverless-services>Configuring OpenServerless services</h2><p>After you satisfied the <a href=/docs/installation/configure/services/#../../prereq/index.adoc>prerequisites</a> and
before you actually <a href=/docs/installation/configure/services/#../../install/index.adoc>install</a> OpenServerless, you
have to select which services you want to install:</p><ul><li><p><a href=/docs/installation/configure/services/#static>Static</a>, publishing of static assets</p></li><li><p><a href=/docs/installation/configure/services/#redis>Redis</a>, a storage service</p></li><li><p><a href=/docs/installation/configure/services/#minio>MinIO</a> an object storage service</p></li><li><p><a href=/docs/installation/configure/services/#postgres>Postgres</a> a relational SQL database</p></li><li><p><a href=/docs/installation/configure/services/#ferretdb>FerretDB</a> A MongoDB-compatible adapter for Postgres</p></li></ul><p>You can enable all the services with:</p><pre><code>ops config enable --all
</code></pre><p>or disable all of them with:</p><pre><code>ops config disable --all
</code></pre><p>Or select the services you want, as follows.</p><h3 id=static>Static Asset Publishing</h3><p>The static service allows you to publish static asset.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>you need to setup a <a href=/docs/installation/configure/dns/#register-dns>a wildcard DNS name</a>
to be able to access them from Internet.</p></blockquote><p>You can enable the Static service with:</p><pre><code>ops config enable --static
</code></pre><p>and disable it with:</p><pre><code>ops config disable --static
</code></pre><h3 id=redis>Redis</h3><p><a href=https://redis.io>Redis</a>, is a fast, in-memory key-value store, usually
used as cache, but also in some cases as a (non-relational) database.</p><p>Enable REDIS:</p><pre><code>ops config enable --redis
</code></pre><p>Disable REDIS:</p><pre><code>ops config disable --redis
</code></pre><h3 id=minio>MinIO</h3><p><a href=https://min.io>MinIO</a> is an object storage service</p><p>Enable minio:</p><pre><code>ops config enable --minio
</code></pre><p>Disable minio:</p><pre><code>ops config disable --minio
</code></pre><h3 id=postgres>Postgres</h3><p><a href=https://www.postgresql.org>Postgres</a> is an SQL (relational) database.</p><p>Enable postgres:</p><pre><code>ops config enable --postgres
</code></pre><p>Disable postgres:</p><pre><code>ops config disable --postgres
</code></pre><h3 id=ferret>FerretDB</h3><p><a href=https://www.ferretdb.io>FerretDB</a> is a MongoDB-compatible adapter for
Postgres. It created a document-oriented database service on top of
Postgres.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>Since FerretDB uses Postgres as its storage, if you enable it, also the
service Postgresql will be enabled as it is required.</p></blockquote><p>Enable MongoDB api with FerretDB:</p><pre><code>ops config enable --mongodb
</code></pre><p>Disable MongoDB api with FerretDB:</p><pre><code>ops config disable --mongodb
</code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-234d738d46569ad9a8a7ae7fed565a21>5 - Install OpenServerless</h1><h2 id=installation-overview>Installation Overview</h2><p>This page provides an overview of the installation process.</p><h3 id=before-installation>Before installation</h3><p>Please ensure you have:</p><ul><li><a href=/docs/installation/download/>downloaded the installer</a></li><li><a href=/docs/installation/prereq/>satisfied the prerequisites</a></li><li><a href=/docs/installation/configure/>configured your installation</a></li></ul><h3 id=core-installation>Core Installation</h3><p>Once you have completed the preparation steps, you can proceed with:</p><ul><li>a local installation on your
<a href=/docs/installation/install/docker/>local machine</a></li><li>a single server installation on a
<a href=/docs/installation/install/server/>Linux server</a></li><li>a clustered installation on a
<a href=/docs/installation/install/cluster/>Kubernetes cluster</a>.</li></ul><blockquote><p>💡 <strong>NOTE</strong></p><p>The install process will notify nuvolaris creators with the type of installation (for example: clustered or server installation), no other info will be submitted. If you want to disable the notification, you can execute the following command before the setup command:</p></blockquote><pre><code>ops -config DO_NOT_NOTIFY_NUVOLARIS=1
</code></pre><h3 id=post-installation>Post installation</h3><p>After the installation, you can consult the development guide
for informations how to reconfigure and update the system.</p><h3 id=support>Support</h3><p>If something goes wrong, you can check:</p><ul><li>the <a href=/docs/installation/debug/>Troubleshooting</a> page</li><li>our online <a href=http://nuvolaris.discourse.group>Forum</a></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-468eb1c803501e0c8fee24ddc1d4914c>5.1 - Docker</h1><div class=lead>Install OpenServerless on a local machine</div><h2 id=local-docker-installation>Local Docker installation</h2><p>This page describes how to install OpenServerless on your local machine. The
services are limited and not accessible from the outside so it is an
installation useful only for <b>development purposes</b>.</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ul><li><p>install <a href=/docs/installation/prereq/docker/>Docker</a>.</p></li><li><p>install <a href=/docs/installation/download/>ops</a>.</p></li></ul><p>Furthermore you will need a decent PC / Mac.</p><p>Docker will need 4 Gb Ram and almost 40Gb of free space to run the cluster
locally.</p><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=info><p class=quote-title>💡 <strong>NOTE</strong></p><p>We introduced a special domain called <code>miniops.me</code>: this domain will always
resolve to 127.0.0.1.
This way the static service for the default namespace nuvolaris will be
linking the <code>http://miniops.me</code> to the nuvolaris web bucket.<br>Adding new users will add an ingress with host set to
<code>http://&lt;namespace>.miniops.me</code>.</p></blockquote><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=warning><p class=quote-title><strong>WARNING</strong></p><p>You cannot have <code>https</code> in a local installation.
If you enable it, the configuration will be ignored.</p></blockquote><h3 id=installation>Installation</h3><p>The following command will perform a full local installation:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup mini
</span></span></code></pre></div><p>Behind the scene, this command will write a cluster configuration file called
<code>~/.ops/config.json</code> activating these services: <code>static</code>, <code>redis</code>, <code>postgres</code>,
<code>ferretdb</code>, <code>minio</code>, <code>cron</code>, <code>milvus</code> constituting the common baseline for
development tasks.</p><p>Wait until the command terminates. It will take minutes to complete, so be
patient.</p><p>The installation will ends showing these informations:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>*** Configuring Access to OpenServerless ***
</span></span><span style=display:flex><span><span style=color:#000>apihost</span><span style=color:#ce5c00;font-weight:700>=</span>http://miniops.me <span style=color:#000>username</span><span style=color:#ce5c00;font-weight:700>=</span>devel
</span></span><span style=display:flex><span>Logging in http://miniops.me as devel
</span></span><span style=display:flex><span>Successfully logged in as devel.
</span></span><span style=display:flex><span>ok: whisk auth set. Run <span style=color:#4e9a06>&#39;wsk property get --auth&#39;</span> to see the new value.
</span></span><span style=display:flex><span>ok: whisk API host <span style=color:#204a87>set</span> to http://miniops.me
</span></span><span style=display:flex><span>OpenServerless host and auth <span style=color:#204a87>set</span> successfully. You are now ready to use ops!
</span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700>==================</span><span style=color:#000;font-weight:700>|</span> UPLOAD RESULTS <span style=color:#000;font-weight:700>|</span><span style=color:#ce5c00;font-weight:700>==================</span>
</span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> FILES : <span style=color:#0000cf;font-weight:700>4</span>
</span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> COMPLETED : <span style=color:#0000cf;font-weight:700>4</span>
</span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> ERRORS : <span style=color:#0000cf;font-weight:700>0</span>
</span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> SKIPPED : <span style=color:#0000cf;font-weight:700>0</span>
</span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> EXEC. TIME : 46.70 <span style=color:#000>ms</span>
</span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700>======================================================</span>
</span></span><span style=display:flex><span>Login with: ops ide login devel https://miniops.me
</span></span><span style=display:flex><span>Password is saved in: /Users/openserverless/.ops/devel.password
</span></span><span style=display:flex><span>Web URL is: http://devel.miniops.me
</span></span></code></pre></div><h3 id=try-your-devel-user>Try your devel user</h3><p>At the end of the setup, you&rsquo;ll have a local OpenServerless installation
with a <code>devel</code> user.</p><p>Open a browser to <a href=http://devel.miniops.me>http://devel.miniops.me</a>. You will see a page like this:</p><img src=/welcome-mini.webp width=700 alt="Welcome Mini"><p>Take a minute to share on Linkedin your experience with the setup and to join
us on <a href=https://discord.com/invite/PkD7CcHgGP>Discord</a>.</p><h3 id=troubleshooting>Troubleshooting</h3><p>Usually the setup completes without errors.</p><p>However, if <code>ops</code> is unable to complete the setup, you may see this message at
the end:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-text data-lang=text><span style=display:flex><span>ops: Failed to run task &#34;create&#34;: exit status 1
</span></span><span style=display:flex><span>task execution error: ops: Failed to run task &#34;create&#34;: exit status 1
</span></span><span style=display:flex><span>ops: Failed to run task &#34;devcluster&#34;: exit status 1
</span></span><span style=display:flex><span>task execution error: ops: Failed to run task &#34;devcluster&#34;: exit status 1
</span></span></code></pre></div><p>If this is your case, try to perform a uninstall / reinstall:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup devcluster --uninstall
</span></span><span style=display:flex><span>ops config reset
</span></span></code></pre></div><p>If this will not solve, please contact the community.</p><h3 id=post-install>Post install</h3><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p><h3 id=uninstall-and-remove-devcluster>Uninstall and remove devcluster</h3><p>This will actually remove the ops namespace and all the services from kind.
Useful to re-try an installation when something gone wrong.</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup devcluster --uninstall
</span></span><span style=display:flex><span>ops config reset
</span></span></code></pre></div></div><div class=td-content style=page-break-before:always><h1 id=pg-2a348e473e676744aeb27b6b290fa85c>5.2 - Linux Server</h1><div class=lead>Install on a Linux Server</div><h2 id=server-installation>Server Installation</h2><p>This page describes how to install OpenServerless on a Linux server
accessible with SSH.</p><p>This is a single node installation, so it is advisable only for
development purposes.</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ol><li><p>install the OpenServerless CLI <a href=/docs/installation/download/>ops</a>;</p></li><li><p>provision a <a href=/docs/installation/prereq/server/>server running a Linux operating system</a>,
either a virtual machine or a physical server, and you know its IP address
or DNS name;</p></li><li><p>configure it to have <a href=/docs/installation/prereq/server/generic/>passwordless ssh access and sudo rights</a>;</p></li><li><p>open the firewall to have access to ports 80, 443 and 6443 or 16443
from your client machine;</p></li><li><p><a href=/docs/installation/configure/dns/>configure</a> the DNS name for the server and choose
the services you want to enable;</p></li></ol><h3 id=installation>Installation</h3><p>If the prerequisites are satisfied, execute the dommand:</p><pre><code>ops setup server &lt;server&gt; &lt;user&gt;
</code></pre><blockquote><p><strong>IMPORTANT</strong></p><p>Replace in the command before <code>&lt;server></code> with the IP address or DNS name
used to access the server, and <code>&lt;user></code> with the username you have to
use to access the server</p></blockquote><p>Wait until the command completes and you will have OpenServerless up and
running.</p><h3 id=post-install>Post Install</h3><ul><li><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p></li><li><p>To uninstall, execute the command:</p></li></ul><pre tabindex=0><code>ops setup server &lt;server&gt; &lt;user&gt; --uninstall
</code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-e2ad6ea02f40220590e02be2e3387f01>5.3 - Kubernetes cluster</h1><div class=lead>Install OpenServerless on a Kubernetes Cluster</div><h2 id=cluster-installation>Cluster Installation</h2><p>This section describes how to install OpenServerless on a Kubernetes Cluster</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/>Provision</a> a Kubernetes Cluster</p></li><li><p><a href=/docs/installation/configure/>Configure</a> the installation</p></li><li><p>install <a href=/docs/installation/download/>Download and install</a> OpenServerless CLI, <code>ops</code>.</p></li></ul><h3 id=installation>Installation</h3><p>If you have a Kubernetes cluster directly accessible with its
configuration, or you provisioned a cluster in some cloud using <code>ops</code>
embedded tools, you just need to type:</p><pre><code>ops setup cluster
</code></pre><p>Sometimes the kubeconfig includes access to multiple Kubernetes
instances, each one identified by a different <code>&lt;context></code> name. You can
install the OpenServerless cluster in a specified <code>&lt;context></code> with:</p><pre><code>ops setup cluster &lt;context&gt;
</code></pre><h3 id=post-install>Post Install</h3><ul><li><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p></li><li><p>To uninstall, execute the command:</p></li></ul><pre tabindex=0><code>ops setup cluster --uninstall
</code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-c7d6e75a293d35b4ca7156b87967599c>6 - Troubleshooting</h1><div class=lead>How to diagnose and solve issues</div><h2 id=debug>Debug</h2><p>This document gives you hints for diagnostics and solving issues, using
the (hidden) subcommand <code>debug</code>.</p><p>Note it is technical and assumes you have some knowledge of how
Kubernetes operates.</p><h3 id=watching>Watching</h3><p>While installing, you can watch the installation (opening another
terminal) with the command:</p><pre><code>ops debug watch
</code></pre><p>Check that no pods will go in error while deploying.</p><h3 id=configuration>Configuration</h3><p>You can inspect the configuration with the <code>ops debug subcommand</code></p><ul><li><p><strong>API host</strong>: <code>ops debug apihost</code></p></li><li><p><strong>Static Configuration</strong>: <code>ops debug config</code>.</p></li><li><p><strong>Current Status</strong>: <code>ops debug status</code></p></li><li><p><strong>Runtimes</strong>: <code>ops debug runtimes</code></p></li><li><p><strong>Load Balancer</strong>: <code>ops debug lb</code></p></li><li><p><strong>Images</strong>: <code>ops debug images</code></p></li></ul><h3 id=logs>Logs</h3><p>You can inspect logs with <code>ops debug log</code> subcommand. Logs you can show:</p><ul><li><p><strong>operator</strong>: <code>ops debug log operator</code> (continuously:
<code>ops debug log foperator</code>)</p></li><li><p><strong>controller</strong>: <code>ops debug log controller</code> (continuously:
<code>ops debug log fcontroller</code>)</p></li><li><p><strong>database</strong>: <code>ops debug log couchdb</code> (continuously:
<code>ops debug log fcouchdb</code>)</p></li><li><p><strong>certificate manager</strong>: <code>ops debug log certman</code>
(continuously: <code>ops debug log fcertmap</code>)</p></li></ul><h3 id=kubernetes>Kubernetes</h3><p>You can detect which Kubernetes are you using with:</p><p><code>ops debug detect</code></p><p>You can then inspect Kubernetes objects with:</p><ul><li><p><strong>namespaces</strong>: <code>ops debug kube ns</code></p></li><li><p><strong>nodes</strong>: <code>ops debug kube nodes</code></p></li><li><p><strong>pod</strong>: <code>ops debug kube pod</code></p></li><li><p><strong>services</strong>: <code>ops debug kube svc</code></p></li><li><p><strong>users</strong>: <code>ops debug kube users</code></p></li></ul><p>You can enter a pod by name (use <code>kube pod</code> to find the name) with:</p><pre><code>ops debug kube exec P=&lt;pod-name&gt;
</code></pre><h3 id=kubeconfig>Kubeconfig</h3><p>Usually, <code>ops</code> uses a hidden kubeconfig so does not override your
Kubernetes configuration.</p><p>If you want to go more in-depth and you are knowledgeable of Kubernetes,
you can export the kubeconfig with <code>ops debug export F=&lt;file></code>.</p><p>You can <strong>overwrite your kubeconfig</strong> (be aware there is no backup) with
<code>ops debug export F=-</code>.</p></div></main></div></div><footer class="td-footer row d-print-none"><div class=container-fluid><div class="disclaimer text-center"><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-2 order-sm-1">&nbsp;</div><div class="td-footer__right col-6 col-sm-2 order-sm-3">&nbsp;</div><div class="td-footer__center col-12 col-sm-8 py-2 order-sm-2"><p>Apache Openserverless™ is an effort undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a
further review indicates that the infrastructure, communications, and decision making process
have stabilized in a manner consistent with other successful ASF projects. While incubation
status is not necessarily a reflection of the completeness or stability of the code, it does
indicate that the project has yet to be fully endorsed by the ASF.</p><br><br><p>Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
Apache Openserverless, the names of other Apache projects, and the ASF logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States
and/or other countries.</p></div></div><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1">&nbsp;</div><div class="td-footer__right col-6 col-sm-4 order-sm-3">&nbsp;</div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><a href=https://www.apache.org/><img class="asf-logo rounded-image" src=/images/asf.webp width=256 height=104>
</a><a href=https://incubator.apache.org/projects/openserverless.html><img class="asf-logo rounded-image" src=/images/apache_incubator.webp width=256 height=104></a></div></div></div></div><div class=container-fluid><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1"><ul class=td-footer__links-list><li class=td-footer__links-item data-bs-toggle=tooltip title="Developer mailing list" aria-label="Developer mailing list"><a target=_blank rel=noopener href=mailto:dev-subscribe@openserverless.apache.org aria-label="Developer mailing list"><i class="fa fa-envelope"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=X.com aria-label=X.com><a target=_blank rel=noopener href=https://x.com/open_serverless aria-label=X.com><i class="fab fa-x-twitter"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Reddit aria-label=Reddit><a target=_blank rel=noopener href=https://reddit.com/r/openserverless aria-label=Reddit><i class="fab fa-reddit"></i></a></li></ul></div><div class="td-footer__right col-6 col-sm-4 order-sm-3"><ul class=td-footer__links-list><li class=td-footer__links-item data-bs-toggle=tooltip title=GitHub aria-label=GitHub><a target=_blank rel=noopener href=https://github.com/apache/openserverless aria-label=GitHub><i class="fab fa-github"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Discord aria-label=Discord><a target=_blank rel=noopener href=https://discord.com/invite/PkD7CcHgGP aria-label=Discord><i class="fab fa-discord"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Slack aria-label=Slack><a target=_blank rel=noopener href=https://the-asf.slack.com/archives/C07B6K5R3F0 aria-label=Slack><i class="fab fa-slack"></i></a></li></ul></div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><span class=td-footer__copyright>&copy;
2024&ndash;2025
<span class=td-footer__authors>The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</span></span><span class=td-footer__all_rights_reserved>All Rights Reserved</span></div></div></div></footer><div id=theme-toggler-container><button id=theme-toggler class="btn btn-light-dark" aria-label="Toggle theme">
<span id=theme-icon class="fa fa-sun"></span></button></div><script>const themeToggler=document.getElementById("theme-toggler"),themeIcon=document.getElementById("theme-icon"),currentTheme=localStorage.getItem("theme")||"light";themeToggler.addEventListener("click",()=>{document.documentElement.classList.toggle("dark-mode");const e=document.documentElement.classList.contains("dark-mode");themeIcon.classList.toggle("fa-sun",!e),themeIcon.classList.toggle("fa-moon",e),localStorage.setItem("theme",e?"dark":"light")})</script><style>#theme-toggler-container{position:fixed;bottom:70px;right:20px;z-index:1000}.btn-light-dark{background:#fff;border:1px solid #ddd;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 6px rgba(0,0,0,.1);cursor:pointer;transition:background-color .3s,transform .2s}.btn-light-dark:hover{background:#f0f0f0;transform:scale(1.1)}.dark-mode .btn-light-dark{background:#333;color:#fff;border-color:#444}</style></div><script src=/js/main.min.90902a026ed2aee7ed45d85797f4c790b240ba148ac6f8a6f194cb1981ffecf5.js integrity="sha256-kJAqAm7SruftRdhXl/THkLJAuhSKxvim8ZTLGYH/7PU=" crossorigin=anonymous></script><script src=/js/prism.js></script><script src=/js/tabpane-persist.js></script></body></html>